Method FullOuterHashJoin
FullOuterHashJoin<TLeft, TRight, TKey>(IAsyncEnumerable<TLeft>, IAsyncEnumerable<TRight>, Func<TLeft, TKey>, Func<TRight, TKey>, IEqualityComparer<TKey>?)
Performs a full outer join on two heterogeneous sequences.
Declaration
public static IAsyncEnumerable<(TLeft? Left, TRight? Right)> FullOuterHashJoin<TLeft, TRight, TKey>(this IAsyncEnumerable<TLeft> left, IAsyncEnumerable<TRight> right, Func<TLeft, TKey> leftKeySelector, Func<TRight, TKey> rightKeySelector, IEqualityComparer<TKey>? comparer = null)
Parameters
| Type | Name | Description |
|---|---|---|
| IAsyncEnumerable<TLeft> | left | The first sequence. |
| IAsyncEnumerable<TRight> | right | The second sequence. |
| Func<TLeft, TKey> | leftKeySelector | A function to extract the join key from each element of the first sequence. |
| Func<TRight, TKey> | rightKeySelector | A function to extract the join key from each element of the second sequence. |
| IEqualityComparer<TKey> | comparer | An IEqualityComparer<T> to hash and compare keys. |
Returns
| Type | Description |
|---|---|
| IAsyncEnumerable<(TLeft Left, TRight Right)> | A sequence containing values from a full outer join of the two input sequences. |
Type Parameters
| Name | Description |
|---|---|
| TLeft | The type of elements in the first sequence. |
| TRight | The type of elements in the second sequence. |
| TKey | The type of the key returned by the key selector functions. |
Remarks
The result of this method is a `full outer`-join. All elements from both left and
right are returned; matching elements are returned together, and elements that do not
match are returned with a default value for the other.
This method is implemented using a `hash`-join. The sequence right is cached as an ILookup<TKey, TElement>, and for-each element of left, the lookup is accessed to
find any matching elements.
This method uses deferred execution and streams its results.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException |
|
FullOuterHashJoin<TLeft, TRight, TKey, TResult>(IAsyncEnumerable<TLeft>, IAsyncEnumerable<TRight>, Func<TLeft, TKey>, Func<TRight, TKey>, Func<TLeft, TResult>, Func<TRight, TResult>, Func<TLeft, TRight, TResult>, IEqualityComparer<TKey>?)
Performs a full outer join on two heterogeneous sequences.
Declaration
public static IAsyncEnumerable<TResult> FullOuterHashJoin<TLeft, TRight, TKey, TResult>(this IAsyncEnumerable<TLeft> left, IAsyncEnumerable<TRight> right, Func<TLeft, TKey> leftKeySelector, Func<TRight, TKey> rightKeySelector, Func<TLeft, TResult> leftResultSelector, Func<TRight, TResult> rightResultSelector, Func<TLeft, TRight, TResult> bothResultSelector, IEqualityComparer<TKey>? comparer = null)
Parameters
| Type | Name | Description |
|---|---|---|
| IAsyncEnumerable<TLeft> | left | The first sequence. |
| IAsyncEnumerable<TRight> | right | The second sequence. |
| Func<TLeft, TKey> | leftKeySelector | A function to extract the join key from each element of the first sequence. |
| Func<TRight, TKey> | rightKeySelector | A function to extract the join key from each element of the second sequence. |
| Func<TLeft, TResult> | leftResultSelector | A function to create a result element from a |
| Func<TRight, TResult> | rightResultSelector | A function to create a result element from a |
| Func<TLeft, TRight, TResult> | bothResultSelector | A function to create a result element from two matching elements. |
| IEqualityComparer<TKey> | comparer | An IEqualityComparer<T> to hash and compare keys. |
Returns
| Type | Description |
|---|---|
| IAsyncEnumerable<TResult> | A sequence containing values projected from a right outer join of the two input sequences. |
Type Parameters
| Name | Description |
|---|---|
| TLeft | The type of elements in the first sequence. |
| TRight | The type of elements in the second sequence. |
| TKey | The type of the key returned by the key selector functions. |
| TResult | The type of the result elements. |
Remarks
The result of this method is a `full outer`-join. Values are projected using bothResultSelector when matching elements are found in both left and right sequences. Values are projected using leftKeySelector when elements in
left do not have a matching element in right. Values are projected
using rightResultSelector when elements in right do not have a
matching element in left.
This method is implemented using a `hash`-join. The sequence right is cached as an ILookup<TKey, TElement>, and for-each element of left, the lookup is accessed to
find any matching elements.
This method uses deferred execution and streams its results.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException |
|