согласно всем примерам преобразование SQL в LINQ для предложения HAVING, как в этот пример:
SELECT NAME
FROM TABLES
GROUP BY NAME
HAVING COUNT(*) > 1
is: (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
Мне так и не удалось сгенерировать предложение HAVING в форме LINQ. Скажем, HAVING и группы подзапросов с помощью WHERE эквивалентны по результатам, но есть ли разница в производительности? как насчет того, чтобы мои исходные SQL-запросы были хотя бы ПОДОБНЫМИ тем, которые LINQ генерирует в основе?