LINQ TO SQL GROUP BY HAVING сгенерирован только как подзапрос

согласно всем примерам преобразование 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 генерирует в основе?

5
задан Sam Saffron 23 November 2011 в 04:23
поделиться