Я передаю asyn c делегат методу LINQ Select
, и я бы предпочел получить список ValueTask
s вместо списка Task
s. Как мне это сделать? Пример:
var result = (new[] { 0 }).Select(async x => await Task.Yield()).ToArray();
Console.WriteLine($"Result type: {result.GetType()}");
Тип результата: System.Threading.Tasks.Task []
Это нежелательно. Я понял, что могу создать нужный список, заменив делегат asyn c на метод asyn c, например:
var result = (new[] { 0 }).Select(DoAsync).ToArray();
Console.WriteLine($"Result type: {result.GetType()}");
async ValueTask DoAsync(int arg)
{
await Task.Yield();
}
Тип результата: System.Threading.Tasks .ValueTask []
Это работает, но неудобно. Есть ли способ сохранить аккуратный синтаксис делегата и все равно получить ValueTask
s, который я хочу?