2011-07-08 12 views
9

Pracowałem z pierwszą metodą poniżej, ale potem znalazłem drugą i chcę poznać różnicę, a która jest najlepsza.Najlepszy sposób na dołączenie Linq

Jaka jest różnica między:

from a in this.dataContext.reglements 
join b in this.dataContext.Clients on a.Id_client equals b.Id 
select... 

i

from a in this.dataContext.reglements 
from b in this.dataContext.Clients 
where a.Id_client == b.Id 
select... 

Odpowiedz

6

stworzyłem przypadek testowy do przetestowania różnicy, aw swojej scenerio okazuje się, że są takie same.

Mój przykład testy stosowane AdventureWorks ale zasadniczo istnieje związek pomiędzy

Produkty-> CategoryId-> Kategorie

var q = (
    from p in Products 
    from c in Categories 
     where p.CategoryID==c.CategoryID 
    select p 
); 

q.ToList(); 

Wytwarza to SQL:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID] 
    FROM [Products] AS [t0], [Categories] AS [t1] 
WHERE [t0].[CategoryID] = ([t1].[CategoryID]) 

var q2 = (
    from p in Products 
    join c in Categories 
     on p.CategoryID equals c.CategoryID 
    select p); 

q2.ToList(); 

Wytwarza to sql:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID] 
FROM [Products] AS [t0] 
INNER JOIN [Categories] AS [t1] ON [t0].[CategoryID] = ([t1].[CategoryID]) 
+0

Używam LinqToSQL – Akrem

+0

Czy drugie tłumaczenie nie będzie połączone w stylu ANSI? Dlaczego miałoby to nastąpić w pamięci? To również poprawny SQL, nie? –

+0

Czy jesteś tego pewien? Nie ma szczególnego powodu, dla którego L2S nie byłby w stanie utworzyć wieloczęściowej klauzuli "FROM" w SQL. –

Powiązane problemy