IEnumerable<T> — synchronous enumeration.
IAsyncEnumerable<T> — asynchronous enumeration.
Definition:
1public async IAsyncEnumerable<int> GetNumbersAsync()2{3 for (int i = 0; i < 10; i++)4 {5 await Task.Delay(100);6 yield return i;7 }8}
Consumption:
1await foreach (var number in GetNumbersAsync())2{3 Console.WriteLine(number);4}
LINQ for IAsyncEnumerable:
1using System.Linq.Async;23var result = await GetNumbersAsync()4 .Where(x => x > 5)5 .SelectAsync(x => x * 2)6 .ToListAsync();
Use cases: