Could somebody please explain to me why this code works:
public async IAsyncEnumerable<int> GetAsync()
{
...
var reader = await connection.ExecuteReaderAsync(query, parameters);
var rowParser = result.GetRowParser<int>();
while (await reader.ReadAsync())
yield return rowParser(reader);
}
while this code doesn't (Cannot return a value from iterators)?
public static class DbDataReaderExtensions
{
public static async IAsyncEnumerable<T> StreamAsync<T>(this DbDataReader reader)
{
var rowParser = reader.GetRowParser<T>();
while (await reader.ReadAsync())
yield return rowParser(reader);
}
}
public async IAsyncEnumerable<int> GetAsync()
{
...
var reader = await connection.ExecuteReaderAsync(query, parameters);
return reader.StreamAsync<int>();
}