Bu makalede LINQ to SQL kullanarak SQL sorgularinda kullandigimiz JOIN islemini gerçeklestirecegiz.
Öncelikle JOIN isleminin kati SQL kodunu inceleyelim.
Elimizde OnlineSatis isminde bir veritabani olsun. Bu veritabani içinde siparis ve urunler isminde iki adet tablomuz olsun.
Bu tablolari inceleyelim:
urunler tablosunda, firmada bulunan ürünlerin bilgileri bulunmaktadir. Bu bilgileri birbirinden ayirt edici özelligi ise id sütunudur. siparis tablosunda ise hangi müsterinin (musteriid) hangi ürünü (urunkodu) kaç adet siparis verdigi bilgileri bulunmaktadir.
Bu tablolardaki bilgilerden, siparis verilmis olan ürünleri görmek istiyoruz.
Bu islemi gerçeklestiren kati SQL kodu asagidaki gibidir:
SELECT DISTINCT urunler.adi FROM urunler INNER JOIN siparis ON urunler.id = siparis.urunkodu
|
Simdi bu islemi LINQ to SQL ile çalistiralim:
Öncelikle projemize LINQ to SQL Data Classes ekliyoruz.
Server Explorer penceresinden yeni bir baglanti olusturup veritabanimizda bulunan urunler ve siparis isimli tablolari DataClasses1 içerisine sürüklüyoruz:
Simdi kodumuzu yazabiliriz:
private void VerileriGetir()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var urunlerim = (from urunum in dc.urunlers
join siparisim in dc.siparis on urunum.id equals siparisim.urunkodu
select urunum.adi).Distinct();
foreach (var urun in urunlerim)
{
listBox1.Items.Add(urun);
}
}
|
from urunum in dc.urunlers join siparisim in dc.siparis on urunum.id equals siparisim.urunkodu
DataClasses içerisinde bulunan urunler tablosunu join anahtar kelimesiyle siparis tablosu ile birlestiriyoruz. on anahtar kelimesinden sonra ise SQL sorgularinda oldugu gibi birlestirme islemini hangi sütunlar üzerinden gerçeklestirecegimiz bilgisini yaziyoruz. urunler tablosunun id sütunu ile siparis tablosunun urunkodu sütununun esit (equals) oldugu kayitlari alacagiz.
Son olarak da foreach ile veritabanindan aldigimiz verileri listbox’a yazdiriyoruz.
Ekran çiktisi asagidaki gibi olacaktir.
Veysel Ugur KIZMAZ