c0D*_*g1c 16 linq async-await c#-5.0 windows-runtime winrt-async
试图await在LINQ查询中使用关键字,我得到这个:
'await'运算符只能用在初始'from'子句的第一个集合表达式中的查询表达式中,或者用在'join'子句的集合表达式中
示例代码:
var data = (from id in ids
let d = await LoadDataAsync(id)
select d);
Run Code Online (Sandbox Code Playgroud)
是不可能等待LINQ查询中的某些内容,还是需要以不同的方式构建它?
Ste*_*ary 25
LINQ对async/的支持非常有限await.对于LINQ到对象,我所知道的唯一真正有用的操作是Select使用async委托(这导致一系列任务).
List<T> data = new List<T>();
foreach (var id in ids)
data.Add(await LoadDataAsync(id));
Run Code Online (Sandbox Code Playgroud)
如果您可以LoadDataAsync安全地并行执行,您的示例可以重写为:
T[] data = await Task.WhenAll(ids.Select(id => LoadDataAsync(id)));
Run Code Online (Sandbox Code Playgroud)