PascalABC.NET

Метод GroupBy

Описание методов

Методы приведены для последовательности sequence of T.

function GroupBy<Key>(keySelector: T->Key): IEnumerable<IGrouping<Key,T>>;       Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и возвращает последовательность групп; каждая группа соответствует одному значению ключа.
function GroupBy<Key>(keySelector: T->Key; comparer: System.Collections.Generic.IEqualityComparer<Key>): IEnumerable<IGrouping<Key,T>>;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа, сравнивает ключи с помощью указанного компаратора и возвращает последовательность групп; каждая группа соответствует одному значению ключа.
function GroupBy<Key,Element>(keySelector: T->Key; elementSelector: T->Element): IEnumerable<IGrouping<Key,T>>;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и проецирует элементы каждой группы с помощью указанной функции. Возвращает последовательность групп; каждая группа соответствует одному значению ключа.
function GroupBy<Key,Element>(keySelector: T->Key; elementSelector: T->Element; comparer: IEqualityComparer<Key>): IEnumerable<IGrouping<Key,Element>>;
      Группирует элементы последовательности в соответствии с функцией селектора ключа.Ключи сравниваются с помощью компаратора, элементы каждой группы проецируются с помощью указанной функции.
function GroupBy<Key,Res>(keySelector: T->Key; resultSelector: (Key,sequence of T)->Res): sequence of Res;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа.
function GroupBy<Key,Element,Res>(keySelector: T->Key; elementSelector: T->Element; resultSelector: (Key,sequence of Element)->Res): sequence of Res;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа.Элементы каждой группы проецируются с помощью указанной функции.
function GroupBy<Key,Res>(keySelector: T->Key; resultSelector: (Key,sequence of T)->Res; comparer: IEqualityComparer<Key>): sequence of Res;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа.Ключи сравниваются с использованием заданного компаратора.
function GroupBy<Key,Element,Res>(keySelector: T->Key; elementSelector: System.T->Element; resultSelector: (Key,sequence of Element)->Res; comparer: IEqualityComparer<Key>): sequence of Res;
      Группирует элементы последовательности в соответствии с заданной функцией селектора ключа и создает результирующее значение для каждой группы и ее ключа.Значения ключей сравниваются с помощью указанного компаратора, элементы каждой группы проецируются с помощью указанной функции.

Пример

begin
  var a := Arr(('Иванов',3),('Попов',1),('Авилов',1),
    ('Козлов',3),('Ослов',2),('Рогов',1));
  var groups := a.GroupBy(s->s[1]);

  foreach var g in groups do
  begin
    Print(g.Key+':');
    g.Select(x->x[0]).Println;
  end;
end.

Вывод:
3: Иванов Козлов
1: Попов Авилов Рогов
2: Ослов