Bu soru aslında bu ikisinde oldukça iyi cevaplandırılmıştır.
INNER JOIN ON vs WHERE clause
INNER JOIN vs multiple table names in "FROM"
Üç farklı LINQ ifadeleri SQL çevrilecektir nasıl iki örnek verdim. Örtülü
katılmak:
from prod in Articles
from kat in MainGroups
where kat.MainGroupNo == prod.MainGroupNo
select new { kat.Name, prod.ArticleNo }
katılmak
SELECT [t1].[Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0], [dbo].[MainGroup] AS [t1]
WHERE [t1].[MainGroupNo] = [t0].[MainGroupNo]
İç Çeviri olacak:
from prod in Articles
join kat in MainGroups on prod.MainGroupNo equals kat.MainGroupNo
select new { kat.Name, prod.ArticleNo }
Çeviri olacak
SELECT [t1].[Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0]
INNER JOIN [dbo].[MainGroup] AS [t1] ON [t0].[MainGroupNo] = [t1].[MainGroupNo]
dış Sol katılmak: Eğer ifadeleri SQL çevrilecektir nasıl test etmek isterseniz
from prod in Articles
join g1 in MainGroups on prod.MainGroupNo equals g1.MainGroupNo into prodGroup
from kat in prodGroup.DefaultIfEmpty()
select new { kat.Name, prod.ArticleNo }
SELECT [t1].[Name] AS [Name], [t0].[ArticleNo]
FROM [dbo].[Article] AS [t0]
LEFT OUTER JOIN [dbo].[MainGroup] AS [t1] ON [t0].[MainGroupNo] = [t1].[MainGroupNo]
Çeviri olacak, sana LINQPad denemenizi tavsiye . Bu tür şeyleri anlamak için harika bir araç.
Peki, daha iyi olan nedir? 2 veya daha fazla maddeden veya 2 veya daha fazla birleştirme cümlesi? – frenchie
http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line adresinde birleştirme maddesi tercih edilir. –