当前位置:  开发笔记 > 编程语言 > 正文

在List <int>中查找最常出现的数字

如何解决《在List<int>中查找最常出现的数字》经验,为你挑选了1个好方法。

有没有使用linq的快速和好的方式?



1> Marc Gravell..:

怎么样:

var most = list.GroupBy(i=>i).OrderByDescending(grp=>grp.Count())
      .Select(grp=>grp.Key).First();

或者在查询语法中:

var most = (from i in list
            group i by i into grp
            orderby grp.Count() descending
            select grp.Key).First();

当然,如果你反复使用它,你可以添加一个扩展方法:

public static T MostCommon(this IEnumerable list)
{
    return ... // previous code
}

然后你可以使用:

var most = list.MostCommon();


如果答案不止一个元素怎么办?
原生LINQ的最佳解决方案.虽然使用[MoreLINQ](http://morelinq.googlecode.com/)的`MaxBy()`你甚至可以执行以下操作:`list.GroupBy(i => i).MaxBy(g => g.Count ()).Key`.除了更短更清晰之外,理论上它对于大型数据集(最大与排序)应该更有效.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有