考虑以下代码...
List<myobject> items = dbItems.Select(x => ConvertDatabaseItem(x)).ToList();
private async Task<myobject> ConvertDatabaseItem(DataObjects.mydbobject x)
{
var item = x.ToContract();
await SetOtherInfo(item);
return item;
}
这将无法编译,因为我们需要等待ConvertDatabaseItem ...
List<myobject> items = dbItems.Select(async x => await ConvertDatabaseItem(x)).ToList();
但是,这将不起作用,因为我们仍然需要等待异步lamda表达式,否则它会出现编译器错误(List >到List )。
List<myobject> items = dbItems.Select(await (async x => await ConvertDatabaseItem(x))).ToList();
但是,这给出了“无法等待lamda表达式”。
我是否在这里错过了一些愚蠢的事情,还是不可能做到这一点?
最佳答案
尝试使用Task.WhenAll方法。您的解决方案将是这样的:
var items = await Task.WhenAll(dbItems.Select(ConvertDatabaseItem));