根据所有示例,SQL转换为LINQ for HAVING子句,如下例所示:
SELECT NAME
FROM TABLES
GROUP BY NAME
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
是:(vb.net)
from t in tables
group t by t.NAME into g = Group
where g.count > 1
select g
Run Code Online (Sandbox Code Playgroud)
但是上面的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
Run Code Online (Sandbox Code Playgroud)
我从未成功生成LINQ的HAVING子句.假设使用WHERE的HAVING和子查询分组在结果中是等价的,但是性能有差异吗?那么保持我的原始SQL查询至少与LINQ生成底层的SIMILAR一样?