返回列表中的最大重复项

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();