2017-02-12 5 views
0

LINQ内の各グループからのn個の項目を取得「各グループから4先頭の項目を取得」が、この私はこのサイトでもっと検索

var rr = db.Products 
      .GroupBy(x => x.ProductSubTypeCategoryId, (key, g) => g.OrderBy(e => e.PersianName) 
      .Take(4).ToList()); 

かのように、各グループから最初の項目を取得についての多くのトピックがあります

var rr = db.Products 
      .GroupBy(x => x.ProductSubTypeCategoryId).Select(g => new { pname = g.Key, count = g.Count() }); 

ただし、各グループから最初の項目のみを返します。どのようにして各グループから4つの項目を取得するようにコードを変更できますか?

答えて

3

はこれを試してみてください:

var rr = db.Products.GroupBy(x => x.ProductSubTypeCategoryId).Select(g => new { GroupName = g.Key, Items = g.Take(4).ToList() }); 

これはあなたProductSubTypeCategoryIdやグループごとに最大4つの項目のリストを返しますItemsプロパティを返しますGroupNameプロパティを持つ匿名オブジェクトを与える必要があります。

1

SelectMany()

var rr = db.Products 
     .GroupBy(x => x.ProductSubTypeCategoryId) 
     .SelectMany(g => g.OrderBy(e => e.PersianName).Take(4)) 
     .ToList(); 
でこのような何かを試してみてください
関連する問題