相关疑难解决方法(0)

在IEnumerable.Select中调用异步方法

我有以下代码,在类型之间转换项目RL使用异步方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

这是否可以使用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

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

"无法将异步lambda表达式转换为委托类型 'System.Func<R,int,L>'.异步lambda表达式可能会返回void, Task或者Task<T> …

c# async-await

36
推荐指数
1
解决办法
2万
查看次数

标签 统计

async-await ×1

c# ×1