【发布时间】:2021-01-08 17:28:33
【问题描述】:
以下代码有效。
employees.AddRange(from e in DbContext.Employees
select new EmployeeSummaryModel
{
Name = e.Name,
Email = e.Email
});
但是我将如何重写此查询以使用await?请注意,我不想使用ToListAsync(),因为这会不必要地创建第二个列表?
【问题讨论】:
-
AddRange本质上是同步的。IEnumerable<>必须已经存在。employees是什么?它是否包含任何其他数据?为什么不使用ToListAsync()? -
@PanagiotisKanavos:您只需要相信我,我需要将其添加到现有列表中。解释我所做的一切超出了本网站的范围。
-
@PanagiotisKanavos:我正在尝试将结果添加到现有列表而不创建第二个列表。
-
我不确定这里(或可能)有两个列表。在执行之前,这应该是一个表达式树。
-
@JonathanWood “我正在努力消除这种浪费” 你能否合理地支持没有这份清单的好处(我什至不确定是否仍然存在编译器优化后)是否超过了您要实现的目标的复杂性? EF 从来不是以性能为前提,而是以易用性为前提。如果您希望性能达到这样的程度,则不应一开始就使用 EF,从而使问题变得毫无意义。最重要的是,您似乎忽略了异步任务管理的开销,这比在内存中拥有单个列表要大得多。
标签: c# entity-framework .net-core async-await entity-framework-core