|
@@ -11,220 +11,70 @@ namespace System.Linq
|
|
|
{
|
|
|
public static partial class AsyncEnumerable
|
|
|
{
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerable<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
- }
|
|
|
-
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerable<TSource, TKey>(source, keySelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector) =>
|
|
|
+ GroupedAsyncEnumerable<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerable<TSource, TKey>(source, keySelector, comparer);
|
|
|
|
|
|
- return new GroupedAsyncEnumerableWithTask<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector) =>
|
|
|
+ new GroupedAsyncEnumerableWithTask<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector) =>
|
|
|
+ new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey>(source, keySelector, comparer: null);
|
|
|
#endif
|
|
|
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTask<TSource, TKey>(source, keySelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerableWithTask<TSource, TKey>(source, keySelector, comparer);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey>(source, keySelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey>(source, keySelector, comparer);
|
|
|
#endif
|
|
|
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerable<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
- }
|
|
|
-
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerable<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) =>
|
|
|
+ new GroupedAsyncEnumerable<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TSource, ValueTask<TElement>> elementSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerable<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
|
|
|
- return new GroupedAsyncEnumerableWithTask<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TSource, ValueTask<TElement>> elementSelector) =>
|
|
|
+ new GroupedAsyncEnumerableWithTask<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TSource, CancellationToken, ValueTask<TElement>> elementSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TSource, CancellationToken, ValueTask<TElement>> elementSelector) =>
|
|
|
+ new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer: null);
|
|
|
#endif
|
|
|
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TSource, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTask<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TSource, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerableWithTask<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TSource, CancellationToken, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (elementSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
-
|
|
|
- return new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<IAsyncGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TSource, CancellationToken, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TElement>(source, keySelector, elementSelector, comparer);
|
|
|
#endif
|
|
|
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IAsyncEnumerable<TSource>, TResult> resultSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
-
|
|
|
- return new GroupedResultAsyncEnumerable<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IAsyncEnumerable<TSource>, TResult> resultSelector) =>
|
|
|
+ new GroupedResultAsyncEnumerable<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IAsyncEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IAsyncEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedResultAsyncEnumerable<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
|
|
|
- return new GroupedResultAsyncEnumerable<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
- }
|
|
|
-
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, ValueTask<TResult>> resultSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
-
|
|
|
- return new GroupedResultAsyncEnumerableWithTask<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, ValueTask<TResult>> resultSelector) =>
|
|
|
+ new GroupedResultAsyncEnumerableWithTask<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, CancellationToken, ValueTask<TResult>> resultSelector)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
-
|
|
|
- return new GroupedResultAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, CancellationToken, ValueTask<TResult>> resultSelector) =>
|
|
|
+ new GroupedResultAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer: null);
|
|
|
#endif
|
|
|
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
-
|
|
|
- return new GroupedResultAsyncEnumerableWithTask<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedResultAsyncEnumerableWithTask<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
|
|
|
#if !NO_DEEP_CANCELLATION
|
|
|
- public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, CancellationToken, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
- {
|
|
|
- if (source == null)
|
|
|
- throw Error.ArgumentNull(nameof(source));
|
|
|
- if (keySelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(keySelector));
|
|
|
- if (resultSelector == null)
|
|
|
- throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
-
|
|
|
- return new GroupedResultAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
- }
|
|
|
+ public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, CancellationToken, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer) =>
|
|
|
+ new GroupedResultAsyncEnumerableWithTaskAndCancellation<TSource, TKey, TResult>(source, keySelector, resultSelector, comparer);
|
|
|
#endif
|
|
|
|
|
|
public static IAsyncEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IAsyncEnumerable<TElement>, TResult> resultSelector)
|
|
@@ -327,13 +177,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedResultAsyncEnumerable(IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IAsyncEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(resultSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _resultSelector = resultSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _resultSelector = resultSelector ?? throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -420,13 +266,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedResultAsyncEnumerableWithTask(IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(resultSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _resultSelector = resultSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _resultSelector = resultSelector ?? throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -514,13 +356,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedResultAsyncEnumerableWithTaskAndCancellation(IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TKey, IAsyncEnumerable<TSource>, CancellationToken, ValueTask<TResult>> resultSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(resultSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _resultSelector = resultSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _resultSelector = resultSelector ?? throw Error.ArgumentNull(nameof(resultSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -608,13 +446,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerable(IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(elementSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _elementSelector = elementSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _elementSelector = elementSelector ?? throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -701,13 +535,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerableWithTask(IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, Func<TSource, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(elementSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _elementSelector = elementSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _elementSelector = elementSelector ?? throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -795,13 +625,9 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerableWithTaskAndCancellation(IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, Func<TSource, CancellationToken, ValueTask<TElement>> elementSelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
- Debug.Assert(elementSelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
- _elementSelector = elementSelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
+ _elementSelector = elementSelector ?? throw Error.ArgumentNull(nameof(elementSelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -888,11 +714,8 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerable(IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -978,11 +801,8 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerableWithTask(IAsyncEnumerable<TSource> source, Func<TSource, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|
|
@@ -1069,11 +889,8 @@ namespace System.Linq
|
|
|
|
|
|
public GroupedAsyncEnumerableWithTaskAndCancellation(IAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, ValueTask<TKey>> keySelector, IEqualityComparer<TKey> comparer)
|
|
|
{
|
|
|
- Debug.Assert(source != null);
|
|
|
- Debug.Assert(keySelector != null);
|
|
|
-
|
|
|
- _source = source;
|
|
|
- _keySelector = keySelector;
|
|
|
+ _source = source ?? throw Error.ArgumentNull(nameof(source));
|
|
|
+ _keySelector = keySelector ?? throw Error.ArgumentNull(nameof(keySelector));
|
|
|
_comparer = comparer;
|
|
|
}
|
|
|
|