使用LINQ和C#从分组列表中获取MAX 5项

时间:2013-07-03 15:22:57

标签: c# asp.net linq group-by

我有一个分组的项目列表,按名称分组。

例如,我有项目[0]有4个项目,项目[1]有6个项目,项目[2]有10个项目等。

现在我想获得Max 5项,即那些GroupedList中项目最多的项目。

我得到的分组列表如下: -

IEnumerable<List<AuditLog>> auditLogsGouped = auditLogs.GroupBy(x =>    x.EntityValue).Select(grp => grp.ToList());

如何从此列表中获取MAX 5项?

感谢您的帮助和时间

2 个答案:

答案 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)

即可