2

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

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

现在我想获得最多 5 个项目,即在这个 GroupedList 中拥有最多项目的那些。

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

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

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

感谢您的帮助和时间

4

2 回答 2

4

这应该对你有用:

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

或更好:

auditLogsGouped.OrderByDescending(x=>x.Count).Take(5);
于 2013-07-03T15:24:47.080 回答
0

你应该看看Enumerable.Take。这是文档和相关部分:

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

Take 枚举 source 并产生元素,直到产生 count 个元素或 source 不再包含元素。如果 count 超过 source 中的元素个数,则返回 source 的所有元素。

所以这应该通过调用来做你想要的.Take(5)

于 2013-07-03T15:26:43.240 回答