如何将System.Linq.Async中的WhereAwait与自定义布尔一起使用



我有一个数据库,我对它进行了很多Where调用,以在Blazor中生成一个表。这需要很长时间,因为Where不是异步的。为了加快速度,我想通过使用System.Linq.Anc.中的:ToAsyncEnumerable().WhereAwait来更改Where语句

这是我的代码行:

series5 = _context.ChickenSeries.ToAsyncEnumerable().WhereAwait(async serie => await ((serie.DatumWeek5 >= firstDay && serie.DatumWeek5 <= lastDay) && serie.SlaughterHouse.SlaughterHouseId != LeegstandID));

这一行出现的错误:"bool"不包含"GetAwaiter"的定义

如何解决此问题?

代码基于的原始帖子:我如何使用";其中";使用异步谓词?最后一个答案。

Where是用于筛选数据的运算符,它是"不执行"查询,它只是为查询定义了筛选器。因此Where不需要asyncs。您必须在IQueryable上应用它来过滤数据。

尝试用以下方式重写您的查询:

var result = await _context.ChickenSeries
.Where(serie => (serie.DatumWeek5 >= firstDay && serie.DatumWeek5 <= lastDay) && serie.SlaughterHouse.SlaughterHouseId != LeegstandID)
.ToListAsync();

如果它仍然很慢,可以选择:

  1. 返回的记录数过高
  2. 数据库没有适当的索引,您必须分析SQL Server执行计划

相关内容

  • 没有找到相关文章

最新更新