joinE<TSecond, TKey, TResult> method
Finds keys in this enumerable with matching keys in the other
collection
and returns a value that is the result of the corresponding elements being
merged.
First, joinE will iterate over the other
collection and make a lookup
table of its elements, referenceable by a key generated by
innerKeySelector
. Then joinE will iterate over the source enumeration,
generating keys via the outerKeySelector
. If a generated key matches a
key in the collection lookup, the collection element and the enumerable
element are passed through the selector
. The returned value of
selector
is then added to the resulting enumerable.
Elements in the source enumerable that doesn't share a key in the
lookup table as well as elements in other
that don't share a key with a
source enumerable element are discarded.
Implementation
Enumerable<TResult> joinE<TSecond, TKey, TResult>(
Iterable<TSecond> other,
Selector<T, TKey> outerKeySelector,
Selector<TSecond, TKey> innerKeySelector,
ZipSelector<T, TSecond, TResult> selector,
{EqualityComparer<T> keyComparer}) {
ArgumentError.checkNotNull(other);
ArgumentError.checkNotNull(outerKeySelector);
ArgumentError.checkNotNull(innerKeySelector);
ArgumentError.checkNotNull(selector);
return JoinEnumerable(
this, other, outerKeySelector, innerKeySelector, selector, keyComparer);
}