secondo tutti i campioni, la conversione di SQL LINQ per HAVING come in questo esempio:LINQ PER GRUPPO SQL avendo generato solo come sottoquery
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
ma la dichiarazione LINQ sopra è tradotto al seguente 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
Non riesco mai a generare la clausola HAV nella forma LINQ. Diciamo che il gruppo HAVING e sottoquery per WHERE sono equivalenti nei risultati, ma c'è una differenza nelle prestazioni? che dire mantenere le mie query SQL originali almeno SIMILI a quelle che LINQ genera?