在 C# 中使用 linq 计算 IEnumerable 中项目的出现次数

counting occurances of item in IEnumerable using linq in C#

我正在尝试找到一种使用 linq 来检查 IEnumerable 并找到某个元素的最大出现次数的巧妙方法。

"aba".SomeLinqExpression(); // => 'a'

(new List<int>{1, 2, 3, 4, 1, 2, 1}).SomLinqExpression(); // => 1

有没有一种简单的内置方法可以做到这一点我想我需要一个聚合查询,但聚合和计数似乎没有这样做。也许是 groupby?

编辑:澄清

我希望获得最常见的价值。我不在乎关系是如何处理的。

如果我们有一个字符串

"abcda" // note that there are 2 'a' characters.

因为'a'是序列中最常见的东西我希望这个操作return'a'

"abcda".SomeLinqExpression(); // returns 'a'

好吧,我想这行得通:

"aqejqkndaasaamd".GroupBy(x => x).OrderByDescending(g => g.Count()).First().Key