The sequence to join.
The sequence to join to the first sequence.
A function to extract the join key from each element of the first sequence.
A function to extract the join key from each element of the second sequence.
A function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence.
Optional
equalityComparer: EqualityComparer<TKey>An Enumerable
const magnus = { name: 'Magnus' };
const terry = { name: 'Terry' };
const adam = { name: 'Adam' };
const john = { name: 'John' };
const barley = { name: 'Barley', owner: terry };
const boots = { name: 'Boots', owner: terry };
const whiskers = { name: 'Whiskers', owner: adam };
const daisy = { name: 'Daisy', owner: magnus };
const scratchy = { name: 'Scratchy', owner: { name: 'Bob' } };
const people = from([magnus, terry, adam, john]);
const pets = from([barley, boots, whiskers, daisy, scratchy]);
const result = groupJoin(
people,
pets,
person => person,
pet => pet.owner,
(person, petCollection) => ({ ownerName: person.name, pets: petCollection.select(p => p.name).toArray() })
)
.toArray();
expect(result).toEqual([
{ ownerName: 'Magnus', pets: ['Daisy'] },
{ ownerName: 'Terry', pets: ['Barley', 'Boots'] },
{ ownerName: 'Adam', pets: ['Whiskers'] },
{ ownerName: 'John', pets: [] }
]);
Correlates the elements of two sequences based on key equality, and groups the results.