|
@@ -68,6 +68,27 @@ namespace System.Linq
|
|
.Max(cancellationToken);
|
|
.Max(cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static Task<TResult> Max<TSource, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, Task<TResult>> selector)
|
|
|
|
+ {
|
|
|
|
+ if (source == null)
|
|
|
|
+ throw new ArgumentNullException(nameof(source));
|
|
|
|
+ if (selector == null)
|
|
|
|
+ throw new ArgumentNullException(nameof(selector));
|
|
|
|
+
|
|
|
|
+ return Max(source, selector, CancellationToken.None);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static Task<TResult> Max<TSource, TResult>(this IAsyncEnumerable<TSource> source, Func<TSource, Task<TResult>> selector, CancellationToken cancellationToken)
|
|
|
|
+ {
|
|
|
|
+ if (source == null)
|
|
|
|
+ throw new ArgumentNullException(nameof(source));
|
|
|
|
+ if (selector == null)
|
|
|
|
+ throw new ArgumentNullException(nameof(selector));
|
|
|
|
+
|
|
|
|
+ return source.Select(selector)
|
|
|
|
+ .Max(cancellationToken);
|
|
|
|
+ }
|
|
|
|
+
|
|
public static Task<IList<TSource>> MaxBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector)
|
|
public static Task<IList<TSource>> MaxBy<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector)
|
|
{
|
|
{
|
|
if (source == null)
|
|
if (source == null)
|