Как сузить список до максимального количества одинаковых элементов в 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), верно.

Другие вопросы по тегам