joinE<TSecond, TKey, TResult> method

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 })

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);
}