Что на самом деле происходит при использовании 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 допустимый синтаксис, но он вообще ничего не делает или имеет определенное применение?

Ответы на вопрос(2)

Ваш ответ на вопрос