我在这个网站上搜索更多“从每个组中获取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个项目?
答案 0 :(得分:3)
试试这个:
var rr = db.Products.GroupBy(x => x.ProductSubTypeCategoryId).Select(g => new { GroupName = g.Key, Items = g.Take(4).ToList() });
这应该为您提供一个具有GroupName
属性的匿名对象,该属性返回ProductSubTypeCategoryId和Items
属性,该属性返回每个组最多4个项目的列表。
答案 1 :(得分:1)
使用SelectMany()
var rr = db.Products
.GroupBy(x => x.ProductSubTypeCategoryId)
.SelectMany(g => g.OrderBy(e => e.PersianName).Take(4))
.ToList();