Linq -按Id分组,按顺序排序,然后选择每个分组的前5名
本文关键字:5名 然后 Id 分组 顺序 Linq 排序 选择 | 更新日期: 2023-09-27 18:13:33
是否有办法在linq组按Id,顺序降序,然后选择每个组的前5名?现在我有一些代码如下所示,但我使用.Take(5)
,它显然选择前5名,而不考虑分组。
Items = list.GroupBy(x => x.Id)
.Select(x => x.OrderByDescending(y => y.Value))
.Select(y => new Home.SubModels.Item {
Name= y.FirstOrDefault().Name,
Value = y.FirstOrDefault().Value,
Id = y.FirstOrDefault().Id
})
你就快成功了。在Select
语句中使用Take
:
var items = list.GroupBy(x => x.Id)
//For each IGrouping - order nested items and take 5 of them
.Select(x => x.OrderByDescending(y => y.Value).Take(5))
这将返回一个IEnumerable<IEnumerable<T>>
。如果你想让它变平,用SelectMany
代替Select