2017-02-12 83 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();