IQueryable和IQueryable <t>是异步的吗?

时间:2018-11-21 17:38:44

标签: c# linq iqueryable

接口IQueryableIQueryable<T>是否异步?

我的意思是,假设以下代码:

void Method()
{
    var customers = CustomerReposity.ToQueryable(); //The execution of query starts here.

    DoSomething();

    foreach (var customer in customers) // The foreach await to finish
        customer.DoSomething();
}

我的自杀对吗?如果没有,什么是实现异步行为的正确形式?

也许...

async void Method()
{
    var customers = CustomerReposity.ToQueryable().ToListAsync(); //The execution of query starts here.

    DoSomething();

    foreach (var customer in await customers) // The foreach await to finish
        customer.DoSomething();
}

这是个好主意吗?

2 个答案:

答案 0 :(得分:3)

否,df = pd.concat([df1, df2, df3]).sort_values('id').reset_index(drop=True) list_ind = df.drop_duplicates(['name','tag']).index df.loc[list_ind,'new'] = range(1,len(list_ind)+1) df['new'] = df.sort_values(['tag','name'])['new'].ffill().astype(int) IQueryable不是异步的,也不一定是异步的。这两个接口提供了从源中提取一些数据的方法,但是要由源提供异步支持。如果源将返回内存中的所有数据,则异步使用它是没有意义的。但是,如果源是从网络“流式传输”的,那么异步枚举可能是有意义的。

答案 1 :(得分:-1)

出于某种奇怪的原因,IQueryable<'T'> 异步方法依赖于实体框架。

using Microsoft.EntityFrameworkCore;

解决问题。