LINQ da Join İşlemleri

Loading

Şimdi de Linq ile datalarımızı çekerken tabloları birleştirmek zorunda kaldığımız yada bir çok ilişkili tablodan istenen dataları çekeceğimiz zamanlar olacaktır. Böyle durumlarda Join işlemleri ile çözüm arayacağız. Aslında Join işlemi ilişkili birden fazla tabloyu çeşitli şartlar ile birbirine bağlayarak bir sonuç dönme işilemidir. Mesala A tablosundaki Fizik öğretmeni nin , B tablosundaki 60 ve üzerinde not alan öğrencilerinin getirilmesi gib.. Linq da İnner Join , Left Join , Cross Join ve Group Join ile işlemlerimizi yaparız.

Şu tabloda güzel bir görsel özet sunulmaktadır.

Sırasıyla bakalım.

İnner Join : İki ya da daha fazla tabloda ortak olan iki alandaki değerleri kontrol ederek tabloları birleştirir

Left Join : Birinci tablodaki tüm kayıtları ve kayıtları olan ve eşleşen diğer tablodaki kayıtları birleştirir.

Not: Bu Join, iki veri kaynağındaki satırları aynı olan bir alan değeri kullanarak birleştirip tek bir liste oluşturmak için kullanılır. Normalde bir veri kaynağındaki ortak alan üzerinden birleştirilemeyen (ortak alan değeri bulunmayan) satırlar dışarda kalır. Ancak DefaultIfEmpty metodu ile eşleme bulunamayan satırlar için varsayılan değer kullanılarak bu satırlarda listeye eklenebilir.

Aşağıdaki olmayan departmandaki kişiyi DefaultIfEmpty (Boş olanlar için varsayılan değeri kullan) yöntemi yardımıyla çıktı listesine dahil edilmiştir.

Yukarda into dan sonra empDept değişken adı ve from sonra ed de empDept nin bir elemanı gibi alınır ve eğer boşka default(varsayılan) değer ata denir ve empDept burada sol taraftaki tabloyu temsil ediyor.

Cross Join : Çapraz birleşim olan cross join,  ilk tablodaki her satırı ikinci tablodaki her satırla birleştirir. Yani iki tablodaki satırları aynı olan bir alan değeri kullanarak birleştirip tek bir liste oluşturmak için kullanılır.

Group Join : Her bir kayıt için ilişkili verileri bir liste şeklinde döner. Yani iki tablodaki satırları aynı olan bir alan değeri kullanarak birleştirip tek bir liste oluşturmak için kullanılır.

sağlıcakla kalın….

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Mesut Yiğit

Kaliteli bilgilerin bulunduğu, paylaşımcı ve her daim geliştirici bir öğrenimin benimsendiği Teknik ve diğer konularda kendime ve geleceğe notlar