public static IAsyncEnumerable <TResult> SelectManyAsync <TSource, TResult>(this IAsyncEnumerable <TSource> source, Func <TSource, int, Task <IEnumerable <TResult> > > selector) => selector == null ? throw new ArgumentNullException(nameof(selector)) : AsyncIteratorEnumerable.Create(() => new SelectManyIterator <TSource, TResult, TResult>(source, (o, i) => selector(o, i).AsAsyncEnumerable(), (_, o) => o));
public static IAsyncEnumerable <TSource> AppendAsync <TSource>(this IAsyncEnumerable <TSource> source, Task <TSource> element) => AsyncIteratorEnumerable.Create(() => new AppendTaskIterator <TSource>(source, element));
public static IAsyncEnumerable <TResult> ConcurrentSelectAsync <TSource, TResult>(this IAsyncEnumerable <TSource> source, Func <TSource, int, Task <TResult> > selector, int maxConcurrency) => AsyncIteratorEnumerable.Create(() => new ConcurrentSelectIterator <TSource, TResult>(source, selector, maxConcurrency));
public static IAsyncEnumerable <TResult> ZipAsync <TFirst, TSecond, TResult>(this IAsyncEnumerable <TFirst> first, Task <IEnumerable <TSecond> > second, Func <TFirst, TSecond, Task <TResult> > resultSelector) => AsyncIteratorEnumerable.Create(() => new ZipIteratorAsync <TFirst, TSecond, TResult>(first, second.AsAsyncEnumerable(), resultSelector));
public static IAsyncEnumerable <TResult> ConcurrentSelectAsync <TSource, TResult>(this IAsyncEnumerable <TSource> source, Func <TSource, Task <TResult> > selector, int maxConcurrency) => selector == null ? throw new ArgumentNullException(nameof(selector)) : AsyncIteratorEnumerable.Create(() => new ConcurrentSelectIterator <TSource, TResult>(source, (o, _) => selector.Invoke(o), maxConcurrency));
public static IAsyncEnumerable <TResult> Zip <TFirst, TSecond, TResult>(this IEnumerable <TFirst> first, IAsyncEnumerable <TSecond> second, Func <TFirst, TSecond, TResult> resultSelector) => AsyncIteratorEnumerable.Create(() => new ZipIterator <TFirst, TSecond, TResult>(first.AsAsyncEnumerable(), second, resultSelector));
public static IAsyncEnumerable <TSource> Concat <TSource>(this IAsyncEnumerable <TSource> first, Task <IEnumerable <TSource> > second) => AsyncIteratorEnumerable.Create(() => new ConcatIterator <TSource>(first, second.AsAsyncEnumerable()));
public static IAsyncEnumerable <TResult> SelectMany <TSource, TCollection, TResult>(this Task <IEnumerable <TSource> > source, Func <TSource, int, IAsyncEnumerable <TCollection> > collectionSelector, Func <TSource, TCollection, Task <TResult> > resultSelector) => collectionSelector == null ? throw new ArgumentNullException(nameof(collectionSelector)) : resultSelector == null ? throw new ArgumentNullException(nameof(resultSelector)) : AsyncIteratorEnumerable.Create(() => new SelectManyIteratorAsync <TSource, TCollection, TResult>(source.AsAsyncEnumerable(), collectionSelector, resultSelector));
public static IAsyncEnumerable <TResult> SelectMany <TSource, TCollection, TResult>(this IAsyncEnumerable <TSource> source, Func <TSource, IAsyncEnumerable <TCollection> > collectionSelector, Func <TSource, TCollection, TResult> resultSelector) => collectionSelector == null ? throw new ArgumentNullException(nameof(collectionSelector)) : resultSelector == null ? throw new ArgumentNullException(nameof(resultSelector)) : AsyncIteratorEnumerable.Create(() => new SelectManyIterator <TSource, TCollection, TResult>(source, (o, _) => collectionSelector(o), resultSelector));