首页 > 解决方案 > 如何正确从选择返回异步?

问题描述

  var abc= await homeFixtures.Select(async x =>
            {
                var home = _teamService.GetTeam(x.HomeId);                
                return await home.GetSeName();
            });

收到错误:“IEnumerable<Task> 不包含 'GetAwaiter' 的定义,并且找不到接受 IEnumerable<Task>' 类型的第一个参数的可访问扩展方法 'GetAwaiter'

标签: c#

解决方案


await与 一起使用TaskSelect返回任务列表。您需要使用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);

推荐阅读