如何在等待一个LINQ查询的方法 [英] How to await a method in a Linq query
本文介绍了如何在等待一个LINQ查询的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
试图用在 LINQ
查询等待
关键字,我得到这样的:
Trying to use the await
keyword in a LINQ
query and I get this:
在'等待'运营商只能在查询前pression'从'条款或一集前pression内使用的初始的第一个集合前pression内加入条款
样code:
var data = (from id in ids
let d = await LoadDataAsync(id)
select d);
是没可能等待在 LINQ
查询的东西,还是需要进行结构不同的方式?
Is it not possible to await something in a LINQ
query, or does it need to be structured a different way?
推荐答案
LINQ具有异步 / 为
的支持非常有限等待
。对于LINQ到对象,我所知道的唯一真正有用的操作是做一个选择
与异步
委托(这导致任务的一个序列)。
LINQ has very limited support for async
/await
. For LINQ-to-objects, the only really useful operation I know of is to do a Select
with an async
delegate (which results in a sequence of tasks).
List<T> data = new List<T>();
foreach (var id in ids)
data.Add(await LoadDataAsync(id));
如果你能做到 LoadDataAsync
并行的方式安全,您的例子可以写成:
If you can do LoadDataAsync
in parallel safely, your example could be rewritten as:
T[] data = await Task.WhenAll(ids.Select(id => LoadDataAsync(id)));
这篇关于如何在等待一个LINQ查询的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文