2015-04-23 205 views
0

我有兩個表類別和產品,我必須創建一個linq查詢返回我的每個類別的前兩行產品。Linq查詢與c#

感謝您的幫助

var res = from prod in context.Prodotti 
      join cat in context.Categorie on coup.id_categoria equals cat.id_categoria 
      select coup; 
+2

你試過使用:'拿(2)'?告訴我們你的代碼... –

+0

你的嘗試在哪裏? – Bonifacio2

+1

聽起來像作業.. –

回答

0

我想類似如下的工作:

var query = context.Categorie 
    .Join(context.Prodotti, 
     cat => cat.id_categoria, 
     prod => prod.id_categoria, 
     (cat, prod) => new { prod, cat }) 
    .GroupBy(x => x.cat.id_categoria) 
    .Select(catGroup => catGroup.Select(x => x.prod).Take(2)); 

這將返回每個類別組的前兩個產品。所以你得到一個IEnumerable<IEnumerable<Prodotti>>。在這裏,我更喜歡與查詢語法join

var query = from cat in context.Categorie 
      join prod in context.Prodotti 
      on cat.id_categoria equals prod.id_categoria 
      select new { cat, prod } into x 
      group x by x.cat.id_categoria into catGroup 
      select catGroup.Select(x => x.prod).Take(2); 
+0

第一個結果是不是IEnumerable

+0

@AntonioDiGirolamo:我不明白你的意見。是的,它是'IEnumerable >'。 –

+0

查詢的結果是IEnumerable > –