小编Cor*_*ehn的帖子

选择异步功能的更好方法?

我一直在重构我的项目中的一个常见模式,发现它不像使用 LINQSelect到异步函数那么简单。

对于上下文,这是当前的完成方式。

async Task<ICollection<Group>> ExecuteQueryGroupsForDomain(DomainInfo domain, int batchSize, CancellationToken ct)
{
    try
    {
        return await BlahBlahActuallyGoGetGroupsForDomainHere(domain, batchSize, ct);
    }
    catch (Exception e)
    {
        return null;
    }
}

var executeQueries = new List<Func<CancellationToken, Task<ICollection<Group>>>>();

domains.ForEach(domain =>
    executeQueries.Add(async (ct) =>
        await ExecuteQueryGroupsForDomain(domain, 123, ct)));

Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试ForEach使用 LINQ替换循环部分:

var executeQueries = domains.Select(domain =>
    async (ct) => await ExecuteQueryGroupsForDomain(domain, 123, ct));
Run Code Online (Sandbox Code Playgroud)

它抱怨Type arguments cannot be inferred by the usage让我相信我没有从 返回任何东西Select,但我显然正在返回Func我想要的。

有没有更好的方法来创建Func's列表,最好避免显式强制转换?当Select …

.net c# linq select func

5
推荐指数
1
解决办法
330
查看次数

标签 统计

.net ×1

c# ×1

func ×1

linq ×1

select ×1