首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsEnumerable -不包含“GetAwaiter”的定义

AsEnumerable -不包含“GetAwaiter”的定义
EN

Stack Overflow用户
提问于 2022-03-23 12:42:52
回答 1查看 98关注 0票数 -1

使用实体框架核心6,我有以下内容:

代码语言:javascript
复制
IEnumerable<Orders> orders = await _dbContext.Orders.Where(x => x.Closed == null).AsEnumerable();

foreach (Order order in orders) {
  // Do something
}

我知道错误:

代码语言:javascript
复制
'IEnumerable<Order>' does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' accepting a first argument of type 'IEnumerable<Order>' could be found (are you missing a using directive or an assembly reference?)

在这种情况下,我应该使用ToListAsync()吗?我理解这些选择:

代码语言:javascript
复制
IQueryable<Order> orders = _context.Orders.Where(x => x.Closed == null).AsQueryable();

IList<Order> orders = await _context.Orders.Where(x => x.Closed == null).ToListAsync();

但是AsEnumerable到底做了什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 12:59:11

AsEnumerable()返回在枚举开始时同步执行查询的IEnumerable,因此没有Task等待。如果必须异步枚举,请使用AsAsyncEnumerable()await foreach

代码语言:javascript
复制
var orders = await _dbContext.Orders.Where(x => x.Closed == null)
    .AsAsyncEnumerable();

await foreach (Order order in orders) 
{
   // Do something
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71587438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档