Skip to content

Commit bff1976

Browse files
committed
Add override on SelectManyAsync
1 parent 7a51bbb commit bff1976

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,7 @@ Initial version.
4040
## 1.3.0
4141

4242
Add support for ConfigureAwait(false)
43+
44+
## 1.3.1
45+
46+
Add override on SelectManyAsync

src/AsyncLinqR/SelectManyAsync.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
public static partial class AsyncLinq
44
{
5+
// TODO Reprendre tous les appels avec IEnumerable<TResult> et les dupliquer avec TResult[] et List<TResult>
6+
// TODO Faire un test qui garantit qu'on n'ait pas d'ambiguité sur les appels sans devoir spécifier les types génériques
7+
// TODO Valider qu'on est bien avec List et array
8+
59
public static async IAsyncEnumerable<TResult> SelectManyAsync<T, TResult>(this IAsyncEnumerable<T> source, Func<T, IEnumerable<TResult>> selector, [EnumeratorCancellation] CancellationToken cancellationToken = default)
610
{
711
await foreach (var item in source.WithCancellation(cancellationToken).ConfigureAwait(false))
@@ -23,6 +27,17 @@ public static async IAsyncEnumerable<TResult> SelectManyAsync<T, TResult>(this I
2327
}
2428
}
2529

30+
public static async IAsyncEnumerable<TResult> SelectManyAsync<T, TResult>(this IEnumerable<T> source, Func<T, Task<TResult[]>> selector, [EnumeratorCancellation] CancellationToken cancellationToken = default)
31+
{
32+
cancellationToken.ThrowIfCancellationRequested();
33+
foreach (var item in source)
34+
foreach (var result in await selector(item).ConfigureAwait(false))
35+
{
36+
cancellationToken.ThrowIfCancellationRequested();
37+
yield return result;
38+
}
39+
}
40+
2641
public static async IAsyncEnumerable<TResult> SelectManyAsync<T, TResult>(this IAsyncEnumerable<T> source, Func<T, Task<IEnumerable<TResult>>> selector, [EnumeratorCancellation] CancellationToken cancellationToken = default)
2742
{
2843
await foreach (var item in source.WithCancellation(cancellationToken).ConfigureAwait(false))

src/AsyncLinqR/_Todo.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@
88
// GroupJoin
99

1010
// Nouveautés .Net 9
11-
// Enumerable.CountBy, AggregateBy
11+
// Enumerable.CountBy, AggregateBy
12+
13+
// Autre : cf SelectManyAsync

0 commit comments

Comments
 (0)