小编hol*_*oly的帖子

LINQ TO SQL GROUP BY HAVING仅作为子查询生成

根据所有示例,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一样?

sql vb.net linq-to-sql having-clause

5
推荐指数
1
解决办法
1631
查看次数

标签 统计

having-clause ×1

linq-to-sql ×1

sql ×1

vb.net ×1