I came across IAsyncEnumerable while I am testing C# 8.0 features. I found remarkable examples from  Anthony Chu (https://anthonychu.ca/post/async-streams-dotnet-core-3-iasyncenumerable/). It is async stream and replacement for Task<IEnumerable<T>>
// Data Access Layer.
public async IAsyncEnumerable<Product> GetAllProducts()
{
    Container container = cosmosClient.GetContainer(DatabaseId, ContainerId);
    var iterator = container.GetItemQueryIterator<Product>("SELECT * FROM c");
    while (iterator.HasMoreResults)
    {
        foreach (var product in await iterator.ReadNextAsync())
        {
            yield return product;
        }
    }
}
// Usage
await foreach (var product in productsRepository.GetAllProducts())
{
    Console.WriteLine(product);
}
I am wondering if this can be applied to read text files like below usage that read file line by line.
foreach (var line in File.ReadLines("Filename"))
{
    // ...process line.
}
I really want to know how to apply async with IAsyncEnumerable<string>() to the above foreach loop so that it streams while reading.
How do I implement iterator so that I can use yield return to read line by line?
 
     
     
    