Что на самом деле происходит при использовании async / await внутри оператора LINQ?
Следующий фрагмент кода компилируется, но я ожидаю, что он будет ждать результата задачи вместо того, чтобы дать мнеList<Task<T>>
.
var foo = bars.Select(async bar => await Baz(bar)).ToList()
Как указаноВотнужно использоватьTask.WhenAll
:
var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList();
await Task.WhenAll(tasks);
Нокомментарий указывает на то, чтоasync
а такжеawait
внутриSelect()
не нужно:
var tasks = foos.Select(foo => DoSomethingAsync(foo)).ToList();
Аналогичный вопросВот где кто-то пытается использовать асинхронный метод внутриWhere()
.
Такasync
а такжеawait
внутри оператора LINQ допустимый синтаксис, но он вообще ничего не делает или имеет определенное применение?