我仍在尝试处理新的async / await运算符。我有几个异步方法返回任务>我打算用它来捕获结果集的问题 - 主要目的是可以同时进行多次检查。
实际上,当我等待Task.WhenAll()时,我得到一个List [],我必须通过它来获得我想要的东西。我认为必须有更好的方法来做到这一点 - 任何帮助都会受到赞赏!
这是我的测试代码(我使用Linqpad作为测试床): 结果是List [],而ErrorList是我想要的样子。再次感谢!
async Task Main()
{
var results = await Task.WhenAll (FirstCheck(), SecondCheck());
var ErrorList = new List<string>();
foreach (var d in results)
{
foreach (var i in d)
{
ErrorList.Add(string.Format("error: {0}",i));
}
}
results.Dump();
ErrorList.Dump();
}
async Task<List<string>> FirstCheck()
{
List<string> Errors = new List<string>{"a","b","c"};
return Errors;
}
async Task<List<string>> SecondCheck()
{
List<string> Errors = new List<string>{"a","b","c"};
return Errors;
}
答案 0 :(得分:7)
听起来你只是想将List<string>[]
转换为IEnumerable<string>
,这不是特定于异步的......普通的LINQ会这样做:
var errors = results.SelectMany(x => x);
这会将列表数组展平为一个序列。