【发布时间】:2022-01-26 17:11:44
【问题描述】:
我有一个数据库,我对它进行了很多 Where 调用以在 Blazor 中创建一个表。这需要很长时间,因为Where 不是异步的。为了加快速度,我想通过使用 System.Linq.Async 中的 ToAsyncEnumerable().WhereAwait 来更改 Where 语句。
这是我的代码行:
series5 = _context.ChickenSeries.ToAsyncEnumerable().WhereAwait(async serie => await ((serie.DatumWeek5 >= firstDay && serie.DatumWeek5 <= lastDay) && serie.SlaughterHouse.SlaughterHouseId != LeegstandID));
这一行出现的错误: 'bool' 不包含 'GetAwaiter' 的定义......
我该如何解决这个问题?
代码基于的原始帖子: How can I use "Where" with an async predicate? 最后一个答案。
【问题讨论】:
-
你为什么需要它?因为
Where is not Async,它很慢是错误的。这很慢,因为您将ToAsyncEnumerable放在了桌面上。您必须先申请Where。然后ToListAsync() -
其实
async操作比同步版本慢。但是在APP Server高负载的情况下,async会放宽服务器的线程使用率。 -
对于 1 个表,我必须进行 +- 100 次数据库调用。该数据库不在同一台服务器上,因此我想让这些调用异步。这不会让它更快吗?
标签: c# linq asynchronous blazor ix.net