使用实体框架核心6,我有以下内容:
IEnumerable<Orders> orders = await _dbContext.Orders.Where(x => x.Closed == null).AsEnumerable();
foreach (Order order in orders) {
// Do something
}我知道错误:
'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()吗?我理解这些选择:
IQueryable<Order> orders = _context.Orders.Where(x => x.Closed == null).AsQueryable();
IList<Order> orders = await _context.Orders.Where(x => x.Closed == null).ToListAsync();但是AsEnumerable到底做了什么呢?
发布于 2022-03-23 12:59:11
AsEnumerable()返回在枚举开始时同步执行查询的IEnumerable,因此没有Task等待。如果必须异步枚举,请使用AsAsyncEnumerable()和await foreach
var orders = await _dbContext.Orders.Where(x => x.Closed == null)
.AsAsyncEnumerable();
await foreach (Order order in orders)
{
// Do something
}https://stackoverflow.com/questions/71587438
复制相似问题