【发布时间】:2020-08-23 02:33:32
【问题描述】:
我一直在尝试使用 Entity Framework Core 和 LINQ 编写查询的不同方法,包括“group by”和“count()”。但是生成的 SQL 只是简单地返回所有记录,然后“group by”和“count()”在内存中完成。
目前我正在尝试编写一个等效于以下 SQL 的查询:
select
e.EngagementId,
e.Name,
c.ClientName,
count(distinct ed.EngagementDocumentId) as DocumentCount,
count(distinct es.EngagementSurveyId) as SurveyCount
from Engagement e
inner join Client c on c.ClientId = e.ClientId
left outer join EngagementDocument ed on ed.EngagementId = e.EngagementId
left outer join EngagementSurvey es on es.EngagementId = e.EngagementId
group by e.EngagementId, e.Name, c.ClientName
我的问题是:如何编写生成类似 SQL 的查询?
【问题讨论】:
-
你使用的是哪个 EF Core 版本?
-
我使用的是 2.2.4 版本
-
谢谢!我会看看的。但我的问题并不特别是“计数不同”。通常,所有使用“分组依据”的查询似乎都在内存中处理。我只是使用了上面的示例,因为如果我能解决这个问题,那么我也可以使用“group by”来解决更简单的查询。
-
如果在
GroupBy之后添加Select仅带有键/聚合,则查询应转换为SQL。
标签: sql .net linq entity-framework-core ef-core-2.2