PascalABC.NET

Методы Join

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

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

function Join<TInner,Key,Res>(inner: sequence of TInner; outerKeySelector: T->Key; innerKeySelector: TInner->TKey; resultSelector: (T,TInner)->Res): sequence of Res;       Объединяет две последовательности на основе сопоставления ключей в третью последовательность. Функция resultSelector задаёт проекцию элементов двух последовательностей с одинаковыми значениями ключа в элемент третьей последовательности.
function Join<TInner,Key,Res>(inner: sequence of TInner; outerKeySelector: T->Key; innerKeySelector: TInner->TKey; resultSelector: (T,TInner)->Res; comparer: System.Collections.Generic.IEqualityComparer<Key>): sequence of Res;
      Объединяет две последовательности на основе сопоставления ключей в третью последовательность. Функция resultSelector задаёт проекцию элементов двух последовательностей с одинаковыми значениями ключа в элемент третьей последовательности. Для сравнения ключей используется компаратор comparer.

Пример

begin
  var people := Arr((1,'Иванов'),(2,'Попов'),(3,'Сидоров'));
  var subjects := Arr((1,'История'),(1,'Математика'),(2,'История')
    ,(3,'Математика'),(1,'Русский'),(2,'Физика'));

  people.Join(subjects,p->p[0],s->s[0],(p,s)->(p[1],s[1])).Println(NewLine);
end.

Вывод:
(Иванов,История)
(Иванов,Математика)
(Иванов,Русский)
(Попов,История)
(Попов,Физика)
(Сидоров,Математика)