返回列表中最大重复项

2024-01-02

        List<string> prod = new List<string>();
        prod.Add("dfg");
        prod.Add("dfg");
        prod.Add("ojj");
        prod.Add("dfg");
        prod.Add("e");

在上面的代码中,产品列表中的项目“dfg”重复了三次(最大计数)... 我希望“dfg”作为输出,因为该项目重复的次数最多。 任何人都可以帮忙吗


不是绝对最有效的,但它有效:

var maxRepeatedItem = prod.GroupBy(x => x)
                          .OrderByDescending(x => x.Count())
                          .First().Key;

这是更有效的:

var maxRepeatedItem = prod.GroupBy(x => x)
                          .MaxBy(x => x.Count())
                          .First().Key;

但这需要MoreLinq http://code.google.com/p/morelinq/的扩展名MaxBy

编辑(根据评论):

如果你想all如果出现平局,最大重复元素数,这是一个可能的解决方案:

var grouped = prod.ToLookup(x => x);
var maxRepetitions = grouped.Max(x => x.Count());
var maxRepeatedItems = grouped.Where(x => x.Count() == maxRepetitions)
                              .Select(x => x.Key).ToList(); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回列表中最大重复项 的相关文章

随机推荐