Ответ 1
Вы можете использовать LINQ:
string maxRepeated = prod.GroupBy(s => s)
.OrderByDescending(s => s.Count())
.First().Key;
List<string> prod = new List<string>();
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
ИЗМЕНИТЬ (в соответствии с комментарием):
Если вы хотите 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();