Bu makalede LINQ to SQL kullanarak SQL sorgularında kullandığımız JOIN işlemini gerçekleştireceğiz.
Öncelikle JOIN işleminin katı SQL kodunu inceleyelim.
Elimizde OnlineSatis isminde bir veritabanı olsun. Bu veritabanı içinde siparis ve urunler isminde iki adet tablomuz olsun.
linq-to-sql-join-1

linq-to-sql-join-1

linq-to-sql-join-2

linq-to-sql-join-2

 
Bu tabloları inceleyelim:
urunler tablosunda, firmada bulunan ürünlerin bilgileri bulunmaktadır. Bu bilgileri birbirinden ayırt edici özelliği ise idsütunudur. siparis tablosunda ise hangi müşterinin (musteriid) hangi ürünü (urunkodu) kaç adet sipariş verdiği bilgileri bulunmaktadır.
Bu tablolardaki bilgilerden, sipariş verilmiş olan ürünleri görmek istiyoruz.
Bu işlemi gerçekleştiren katı SQL kodu aşağıdaki gibidir:
SELECT DISTINCT urunler.adi FROM urunler INNER JOIN siparis ON urunler.id =siparis.urunkodu
Şimdi bu işlemi LINQ to SQL ile çalıştıralım:
Öncelikle projemize LINQ to SQL Data Classes ekliyoruz.
linq-to-sql-join-3

linq-to-sql-join-3

Server Explorer penceresinden yeni bir bağlantı oluşturup veritabanımızda bulunan urunler ve siparis isimli tablolarıDataClasses1 içerisine sürüklüyoruz:
linq-to-sql-join-4

linq-to-sql-join-4

Şimdi 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 equalssiparisim.urunkodu
DataClasses içerisinde bulunan urunler tablosunu join anahtar kelimesiyle siparis tablosu ile birleştiriyoruz. onanahtar kelimesinden sonra ise SQL sorgularında olduğu gibi birleştirme işlemini hangi sütunlar üzerindengerçekleştireceğimiz bilgisini yazıyoruz. urunler tablosunun id sütunu ile siparis tablosunun urunkodu sütununun eşit (equals) olduğu kayıtları alacağız.
Son olarak da foreach ile veritabanından aldığımız verileri listbox’a yazdırıyoruz.
Ekran çıktısı aşağıdaki gibi olacaktır.
linq-to-sql-join-5

linq-to-sql-join-5