Я хочу спросить, существует ли план или существует метод для агрегирования прибыли (ей) IAsyncEnumerable
? Итак, учитывая приведенный ниже метод, почему нет краткого способа агрегирования его результата?
public async IAsyncEnumerable<bool> GenerateAsyncEnumerable(int range)
{
foreach (var x in Enumerable.Range(0, range))
{
await Task.Delay(500 * x);
yield return x % 2 == 0;
}
}
Текущий сценарий
public async Task Main()
{
bool accum = true;
await foreach (var item in GenerateAsyncEnumerable(3))
{
accum &= item;
//have some side effects on each particular item of the sequence
}
Console.WriteLine($"Accumulator:{accum}");
}
Желаемый сценарий
Я хотел бы агрегировать результаты IAsyncEnumerable
с учетом пользовательской агрегации Func
public async Main()
{
bool result = await foreach (var item in GenerateAsyncEnumerable(3).Aggregate(true, (x, y) => x & y))
{
//have some side effects on each particular item of the sequence
}
}
PS Мне не нравится (в первом сценарии ) что мне нужно добавить дополнительную локальную переменную accum
, которая собирает результаты перечислимого. Я что-то пропустил, есть какой-то синтактический сахар c, о котором я не знаю?