返回列表中的最大重复项
List prod = new List(); prod.Add("dfg"); prod.Add("dfg"); prod.Add("ojj"); prod.Add("dfg"); prod.Add("e");
在上面的代码中prod List有项目“dfg”重复三次(最大计数)…我想要“dfg”作为输出,因为这个项目重复最多次。 任何人都可以帮忙
您可以使用LINQ:
string maxRepeated = prod.GroupBy(s => s) .OrderByDescending(s => s.Count()) .First().Key;
不是绝对最有效的,但它有效:
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的扩展MaxBy
编辑(根据评论):
如果你想要关系中所有最大重复元素,这里有一个可能的解决方案:
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();