Как сузить список до максимального количества одинаковых элементов в C#
Допустим, у меня есть этот список в массиве под названием "массив":
[0]a.1
[1]b.1
[2]c.1
[3]d.1
[4]e.2
[5]f.2
[6]g.2
[7]h.3
Я хочу сузить его с помощью C# до списка с максимум двумя одинаковыми числами в списке, чтобы он выглядел так:
[0]a.1
[1]b.1
[2]e.2
[3]f.2
[4]h.3
Я пытался использовать "GroupBy":
var Groups = array.GroupBy(i => i);
var Result = Groups.SelectMany(iGroup => iGroup.Take(2)).ToArray();
но я не уверен, как принимать во внимание только то, что после точки, а не весь предмет
1 ответ
Решение
Я не уверен, как принять во внимание только то, что после точки, а не весь предмет
Если точка гарантированно присутствует, разделите ее и возьмите второй элемент:
var Groups = array.GroupBy(i => i.Split('.')[1]);
Остальная часть вашего кода, с SelectMany
а также Take(2)
, верно.