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

本文关键字:列表 获取 MAX 5项 LINQ 使用 | 更新日期: 2023-09-27 18:20:49

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

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

现在我想得到最多5个项目,即这个GroupedList中项目最多的项目。

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

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

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

感谢您的帮助和时间

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

这应该对你有好处:

auditLogsGouped.OrderBy(x=>x.Count).Reverse().Take(5);

或更好:

auditLogsGouped.OrderByDescending(x=>x.Count).Take(5);

您应该看看Enumerable.Take。以下是文档和相关部分:

public static IEnumerable<TSource> Take<TSource>(
        this IEnumerable<TSource> source,
  int count
)

Take枚举源并生成元素,直到计数元素已生成,或者源不再包含元素。如果count超过源中的元素数,源的所有元素返回。

因此,只需调用.Take(5)

就可以完成您想要的操作