c# - 如何正确从选择返回异步?
问题描述
var abc= await homeFixtures.Select(async x =>
{
var home = _teamService.GetTeam(x.HomeId);
return await home.GetSeName();
});
收到错误:“IEnumerable<Task> 不包含 'GetAwaiter' 的定义,并且找不到接受 IEnumerable<Task>' 类型的第一个参数的可访问扩展方法 'GetAwaiter'
解决方案
await
与 一起使用Task
。Select
返回任务列表。您需要使用Task.WhenAll来等待所有这些任务并检索它们的结果,例如:
var tasks= homeFixtures.Select(async x =>
{
var home = _teamService.GetTeam(x.HomeId);
return await home.GetSeName();
});
var abc=await Task.WhenAll(tasks);
的返回的结果home.GetSeName()
不使用,Select
所以await
可以去掉,直接返回任务:
var tasks= homeFixtures.Select(x =>
{
var home = _teamService.GetTeam(x.HomeId);
return home.GetSeName();
});
var abc=await Task.WhenAll(tasks);
推荐阅读
- java - 如何在 lambda 中返回值
- saml-2.0 - Saml2.0 和 Service Provider 请求的数据
- c# - 有没有办法为泛型类提供多个签名
- java - 有没有办法通过swagger注释为不同端点资源使用的模型类编写不同的文档?
- java - 如何解析从清单中的意图过滤器收到的内容数据?
- ignite - 由于锁定,Apache-Ignite 源代码测试确实继续运行
- android - 如何使用 Retrofit 发送发布请求?
- c# - 关于从 Razor 视图接收表单数据到 Controller 和 EF 绑定
- service-worker - 有没有办法在 navigator.serviceWorker.register() 中传递凭据?
- tensorflow - 在哪里可以找到 TensorFlow 2.0 的 tensorflow.contrib.layers