如何在等待一个LINQ查询的方法 [英] How to await a method in a Linq query

查看:113
本文介绍了如何在等待一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆