Linq To Sql – JOIN
Linq To Sql’de Join işlemleri nasıl yapılır onu inceleyelim.
Hemen bir örnekle izah etmeye çalışalım.
Önceki yazılarımda hazırladığım Northwind.dbml dosyasını kullanacağım.
–Beverages kategorisindeki ürünler hangileridir ?
NorthwindDataContext Northwind = new NorthwindDataContext(); var Sonuc = from kategori in Northwind.Kategorilers join urun in Northwind.Urunlers on kategori.KategoriID equals urun.KategoriID where kategori.KategoriAdi == "Beverages" select new { Urun = urun.UrunAdi }; foreach (var item in Sonuc) { listBox1.Items.Add(item.Urun); }
“join” anahtar sözcüğünden sonraki parametre “Northwind.Urunlers” koleksiyonundaki bir nesneyi işaret etmektedir.”on” anahtar sözcüğü ile ilişkili sütunları eşitliyoruz.Eşitleme işlemini “equals” komutuyla yapıyoruz.
–Spain’de yaşayan müşteriler ve bu müşterilere yapılan satış sayısı? Hiç satış yapılmayan müşteriler listelenmesin.
NorthwindDataContext Northwind = new NorthwindDataContext(); var Sonuc = from satis in Northwind.Satislars where satis.Musteriler.Ulke =="Spain" join musteri in Northwind.Musterilers on satis.MusteriID equals musteri.MusteriID group satis by satis.Musteriler.MusteriAdi into Grup where Grup.Count() > 0 select new { Satis = Grup.Count(), MusteriAdi = Grup.Key }; foreach (var item in Sonuc) { listBox1.Items.Add(item.MusteriAdi + " " + item.Satis); }
LINQ’da join yaparken, nesneler üzerinden de birleştirme yapabiliriz.
NorthwindDataContext Northwind = new NorthwindDataContext(); var Sonuc = from musteri in Northwind.Musterilers where musteri.Ulke == "Spain" join satis in Northwind.Satislars on musteri equals satis.Musteriler group satis by satis.Musteriler.MusteriAdi into Grup select new { Satis = Grup.Count(), MusteriAdi = Grup.Key }; foreach (var item in Sonuc) { listBox1.Items.Add(item.Satis + " " + item.MusteriAdi); }
İyi çalışmalar
Son örnekte Northwind.Satislars veritanindaki bi alanı nasıl alabilirim select new kısmına ?