根据所有示例,SQL 转换为 HAVING 子句的 LINQ,如下例所示:
SELECT NAME
FROM TABLES
GROUP BY NAME
HAVING COUNT(*) > 1
是:(vb.net)
from t in tables
group t by t.NAME into g = Group
where g.count > 1
select g
但是上面的 LINQ 语句被翻译成下面的 SQL:
SELECT [t1].[NAME] AS [Key]
FROM (
SELECT COUNT(*) AS [value], [t0].[NAME]
FROM [tables] AS [t0]
WHERE [t0].[NAME] <> @p0
GROUP BY [t0].[NAME]
) AS [t1]
WHERE [t1].[value] > @p1
我从来没有成功地从 LINQ 生成 HAVING 子句。假设 HAVING 和子查询 group by with WHERE 在结果上是等价的,但是在性能上有区别吗?如何让我的原始 SQL 查询至少类似于 LINQ 生成的底层查询?