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

标签 c# linq ienumerable

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

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

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

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

编辑:澄清

我正在寻求访问最常见的值。我不在乎如何处理关系。

如果我们有一个字符串

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

由于“a”是序列中最常见的内容,因此我希望此操作返回“a”

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

最佳答案

嗯,我想这会起作用:

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

关于c# - 在 C# 中使用 linq 计算 IEnumerable 中项目的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30405842/

相关文章:

可用作 IEnumerable 和 Single 对象的 C# 对象

c# - Automapper - 忽略有条件的映射

c# - 将 View 呈现为字符串

javascript - 更新面板中中继器中的 LinkBut​​ton onclick 事件

c# - 将数据表拆分为多个数据表

c# - LINQ to Entities - 比较日期

c# - 从 BindingList 中删除重复项

c# - 如何检查对象是否是某种类型的数组?

c# - 使用 linq 和 c# 查询数据表

c# - 调试时检查 IEnumerable "stack"?