Следующий фрагмент компиляции, но я ожидаю, что он ждет результат задачи вместо того, чтобы дать мне 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();
Аналогичный вопрос здесь, где кто-то пытается использовать метод async внутри Where().
Итак, async и await внутри оператора LINQ - это легальный синтаксис, но делает он вообще ничего или не использует его?