2017-02-12 62 views
0

我更多的搜索在本網站「獲得各組的4個頂部項目」,但也有來自各組獲得第一個項目這樣檢索LINQ各組n項

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() }); 

這應該給你一個GroupName屬性,返回ProductSubTypeCategoryId和返回的多達4項爲每個組列表的Items屬性的匿名對象。

1

嘗試這樣的事情與SelectMany()

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