すべてのサンプルによると、次の例のように HAVING 句の LINQ への SQL 変換:
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 と subquery group by with WHERE の結果は同じですが、パフォーマンスに違いはありますか? 元の SQL クエリを、少なくとも LINQ が生成する基盤と同じ程度に保つのはどうですか?