我有一个int?
列表,可以有3个不同的值:null,1和2。
我想知道哪些在我的列表中发生的最多。为了按值分组,我尝试使用:
MyCollection.ToLookup(r => r)
如何获得最常出现的值?
答案 0 :(得分:5)
您不需要查找,简单的GroupBy会执行:
var mostCommon = MyCollection
.GroupBy(r => r)
.Select(grp => new { Value = grp.Key, Count = grp.Count() })
.OrderByDescending(x => x.Count)
.First()
Console.WriteLine(
"Value {0} is most common with {1} occurrences",
mostCommon.Value, mostCommon.Count);