我正在尝试使用LINQ返回发生最大次数及其发生次数的元素。

例如:
我有一个字符串数组:

string[] words = { "cherry", "apple", "blueberry", "cherry", "cherry", "blueberry" };

//...
Some LINQ statement here
//...

在此数组中,查询将返回cherry作为出现的最大元素,并返回3作为出现的次数。如果需要的话,我也愿意将它们分为两个查询(即,第一个查询以获取cherry,第二个查询返回3的计数。

最佳答案

var topWordGroup = words.GroupBy(word => word).OrderByDescending(group => group.Count()).FirstOrDefault();
// topWordGroup might be a null!
string topWord = topWordGroup.Key;
int topWordCount = topWordGroup.Count;

如果我们不喜欢O(N log N):
var topWordGroup = words.GroupBy(word => word).Aggregate((current, acc) => current.Count() < acc.Count() ? acc : current);

10-05 18:34