我有以下代码,在类型之间转换项目R
并L
使用异步方法:
class MyClass<R,L> {
public async Task<bool> MyMethodAsync(List<R> remoteItems) {
...
List<L> mappedItems = new List<L>();
foreach (var remoteItem in remoteItems )
{
mappedItems.Add(await MapToLocalObject(remoteItem));
}
//Do stuff with mapped items
...
}
private async Task<L> MapToLocalObject(R remoteObject);
}
是否可以使用 IEnumerable.Select 调用(或类似调用)来减少代码行?我试过这个:
class MyClass<R,L> {
public async Task<bool> MyMethodAsync(List<R> remoteItems) {
...
List<L> mappedItems = remoteItems.Select<R, L>(async r => await MapToLocalObject(r)).ToList<L>();
//Do stuff with mapped items
...
}
}
但我得到错误:
“无法将异步 lambda 表达式转换为委托类型
'System.Func<R,int,L>'
。异步 lambda 表达式可能返回void
,Task
或Task<T>
,其中任何一个都不能转换为'System.Func<R,int,L>'
。”
我相信我遗漏了关于 async/await 关键字的一些内容,但我不知道是什么。有谁知道我可以如何修改我的代码以使其工作?