我有一个分组的项目列表,按名称分组。
例如,我有项目[0]有4个项目,项目[1]有6个项目,项目[2]有10个项目等。
现在我想获得Max 5项,即那些GroupedList中项目最多的项目。
我得到的分组列表如下: -
IEnumerable<List<AuditLog>> auditLogsGouped = auditLogs.GroupBy(x => x.EntityValue).Select(grp => grp.ToList());
如何从此列表中获取MAX 5项?
感谢您的帮助和时间
答案 0 :(得分:4)
这应该对你有所帮助:
auditLogsGouped.OrderBy(x=>x.Count).Reverse().Take(5);
或更好:
auditLogsGouped.OrderByDescending(x=>x.Count).Take(5);
答案 1 :(得分:0)
你应该看看Enumerable.Take
。这是documentation和相关部分:
public static IEnumerable<TSource> Take<TSource>(
this IEnumerable<TSource> source,
int count
)
在枚举之前,枚举source和yield元素 元素已经产生或源不包含更多元素。如果 count超过源中元素的数量,源的所有元素 归还。
所以这应该只需要调用.Take(5)