Merhaba Arkadaşlar,
Linq sorgularında join ifadesinin nasıl kullanıldığını örneklerle inceleyelim.
İNNER JOIN Kullanımı
**2 Tablo joinleme;
var id = 1;
var query =
from hb in db.Haberler
join rs in db.Resimler hb.ID equals rs.ID
where post.ID == id
select new { Baslik = hb.baslik, Resim = rs.Resimadi };
***Sql join mantığına çok benzer gördüğünüz gibi,dikkat edilecek husus iki tablo arasında id leri eşitlerken ' = ' değil 'equals' kullanmamız.
**2 den falza tablo joinleme
var q=(from pd in db.tblProducts
join od in db.tblOrders on pd.ProductID equals od.ProductID
join ct in db.tblCustomers on od.CustomerID equals ct.CustID
orderby od.OrderID
select new { od.OrderID,
pd.ProductID,
pd.Name,
pd.UnitPrice,
od.Quantity,
od.Price,
Customer=ct.Name
}).ToList();
**Birden fazla alan eşitleyeceğimiz zaman;
var q3 = from c in db.Customers
join o in db.Orders on
new { a = c.CustomerID, b = c.Country }
equals new { a = o.CustomerID, b = "Turkey" }
select new
{
c.ContactName,
o.OrderDate
};
LEFT JOIN Kullanımı
Farkı eşitlemeden sonra into ve DefaultIfEmpty() methodu ile kullanılması
var q=(from pd in db.tblProducts
join od in db.tblOrders on pd.ProductID equals od.ProductID into t
from rt in t.DefaultIfEmpty() orderby pd.ProductID
select new {
OrderID=(int?)rt.OrderID,
pd.ProductID,
pd.Name,
pd.UnitPrice,
rt.Quantity,
rt.Price,
}).ToList();