Группировка

LINQ содержит несколько методов группировки элементов последовательности по некоторому признаку. Основной способ группировки — это метод GroupBy. Вот его полная сигнатура:

IEnumerable<IGrouping<TKey, TItem>> GroupBy(Func<TItem, TKey> keySelector)

keySelector по каждому элементу последовательности получает значение ключа. Все элементы последовательности с одинаковым значением ключа образуют группу.

Пример ниже показывает, как можно разбить список имен в группы по первой букве имени:

В некотором смысле GroupBy — это метод противоположный по действию методу SelectMany. GroupBy создает группы, а SelectMany из списка групп делает плоский список.

SelectMany после GroupBy не поменяют состав последовательности, но могут изменить порядок следования элементов:

Комментарии отключены