Bu makalede kullanılan
veri kaynağını görmek için tıklayın.
Join İle Çapraz Birleştirme (Cross Join) Örneği
Join cümleciği, 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.
Bu örnek öğrenci bilgilerinden oluşan bir veri kaynağındaki kayıtlar ile öğrenci kulübü bilgilerinden oluşan
bir başka veri kaynağını kulüp numarası üzerinden birleştirerek yeni bir isimsiz sınıf listesi oluşturarak
yeni listeyi çıktıya yazar.
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var OgrencilerVeKulupSorumlulari =
from Ogrenci in Ogrenciler
join Kulup in Kulupler on Ogrenci.Kulup equals Kulup.KayitNo
select new { OgrenciAdi = Ogrenci.Adi, KulupAdi = Kulup.Adi, KulupSorumlusu = Kulup.Sorumlu };
Console.WriteLine("Öğrenciler ve üye oldukları kulüplerin rehber öğretmenleri :");
foreach (var Nesne in OgrencilerVeKulupSorumlulari)
{
Console.WriteLine("{0} isimli öğrenci {1} kulübüne üyedir. Kulübün rehber öğretmeni: {2}.",
Nesne.OgrenciAdi,
Nesne.KulupAdi,
Nesne.KulupSorumlusu);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Öğrenciler ve üye oldukları kulüplerin rehber öğretmenleri :
Tuncay isimli öğrenci Gezi kulübüne üyedir. Kulübün rehber öğretmeni: Tanju Bülbül.
Jale isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Tekin isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Mesut isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Veli isimli öğrenci Müzik kulübüne üyedir. Kulübün rehber öğretmeni: Nuri Sezer.
Ahmet isimli öğrenci Müzik kulübüne üyedir. Kulübün rehber öğretmeni: Nuri Sezer.
Fatma isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Mehmet isimli öğrenci Gezi kulübüne üyedir. Kulübün rehber öğretmeni: Tanju Bülbül.
Hale isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Ayşe isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Cevdet isimli öğrenci Müzik kulübüne üyedir. Kulübün rehber öğretmeni: Nuri Sezer.
Nuri isimli öğrenci Müzik kulübüne üyedir. Kulübün rehber öğretmeni: Nuri Sezer.
Kenan isimli öğrenci Gezi kulübüne üyedir. Kulübün rehber öğretmeni: Tanju Bülbül.
Lale isimli öğrenci Gezi kulübüne üyedir. Kulübün rehber öğretmeni: Tanju Bülbül.
Erhan isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Erhan isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Erhan isimli öğrenci Tiyatro kulübüne üyedir. Kulübün rehber öğretmeni: Metin Öztürk.
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var Kulupler = KulupleriGetir();
var OgrencilerVeKulupSorumlulari =
Ogrenciler.SelectMany(Ogrenci =>
Kulupler.Where(Kulup => Kulup.KayitNo == Ogrenci.Kulup)
,
(Ogrenci, Kulup) =>
new
{
OgrenciAdi = Ogrenci.Adi,
KulupAdi = Kulup.Adi,
KulupSorumlusu = Kulup.Sorumlu
}
);
Console.WriteLine("Öğrenciler ve üye oldukları kulüplerin rehber öğretmenleri :");
foreach (var Nesne in OgrencilerVeKulupSorumlulari)
{
Console.WriteLine("{0} isimli öğrenci {1} kulübüne üyedir. Kulübün rehber öğretmeni: {2}.",
Nesne.OgrenciAdi,
Nesne.KulupAdi,
Nesne.KulupSorumlusu);
}Console.ReadLine();
Join İle Birleştirerek Gruplar Oluşturma
Join cümleciği, 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.
Bu örnek öğrenci bilgilerinden oluşan bir veri kaynağındaki kayıtlar ile öğrenci kulübü bilgilerinden oluşan
bir başka veri kaynağını kulüp numarası üzerinden into yardımıyla grup olarak birleştirir.
Daha sonra grup bilgilerinden oluşturduğu bir isimsiz sınıf listesini çıktıya yazar.
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var KuluplerVeOgrencileri =
from Kulup in Kulupler
join Ogrenci in Ogrenciler on Kulup.KayitNo equals Ogrenci.Kulup into KulupVeOgrencileri
select new
{
KulupVeOgrencileri = KulupVeOgrencileri,
OgrenciSayisi = KulupVeOgrencileri.Count(),
KulupAdi = Kulup.Adi
};
foreach (var Satir in KuluplerVeOgrencileri)
{
Console.WriteLine("{0} kulübüne üye {1} öğrenci var. Öğrenciler :",
Satir.KulupAdi,
Satir.OgrenciSayisi);
foreach (var a in Satir.KulupVeOgrencileri)
{
Console.WriteLine(a.Adi);
}
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Gezi kulübüne üye 4 öğrenci var. Öğrenciler :
Tuncay
Mehmet
Kenan
Lale
Tiyatro kulübüne üye 9 öğrenci var. Öğrenciler :
Jale
Tekin
Mesut
Fatma
Hale
Ayşe
Erhan
Erhan
Erhan
Müzik kulübüne üye 4 öğrenci var. Öğrenciler :
Veli
Ahmet
Cevdet
Nuri
Kitap kulübüne üye 0 öğrenci var. Öğrenciler :
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var KuluplerVeOgrencileri =
Kulupler.GroupJoin(Ogrenciler,
Kulup => Kulup.KayitNo,
Ogrenci => Ogrenci.Kulup,
(Kulup, KulupVeOgrencileri) => new
{
KulupVeOgrencileri = KulupVeOgrencileri,
OgrenciSayisi = KulupVeOgrencileri.Count(),
KulupAdi = Kulup.Adi
});
foreach (var Satir in KuluplerVeOgrencileri)
{
Console.WriteLine("{0} kulübüne üye {1} öğrenci var. Öğrenciler :",
Satir.KulupAdi,
Satir.OgrenciSayisi);
foreach (var a in Satir.KulupVeOgrencileri)
{
Console.WriteLine(a.Adi);
}
}Console.ReadLine();
Join İle Çapraz Birleştirme (Cross Join) ve Grup Birleştirmesinin Birlikte Kullanımı Örneği
Join cümleciği, 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.
Bu örnek öğrenci bilgilerinden oluşan bir veri kaynağındaki kayıtlar ile öğrenci kulübü bilgilerinden oluşan
bir başka veri kaynağını kulüp numarası üzerinden into yardımıyla grup olarak birleştirir.
Daha sonra grup bilgilerinden oluşturduğu bir isimsiz sınıf listesini çıktıya yazar.
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var KuluplerVeOgrencileri =
from Kulup in Kulupler
join Ogrenci in Ogrenciler on Kulup.KayitNo equals Ogrenci.Kulup into KulupVeOgrencileri
select new
{
KulupVeOgrencileri = KulupVeOgrencileri,
OgrenciSayisi = KulupVeOgrencileri.Count(),
KulupAdi = Kulup.Adi
};
foreach (var Satir in KuluplerVeOgrencileri)
{
Console.WriteLine("{0} kulübüne üye {1} öğrenci var. Öğrenciler :",
Satir.KulupAdi,
Satir.OgrenciSayisi);
foreach (var a in Satir.KulupVeOgrencileri)
{
Console.WriteLine(a.Adi);
}
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Gezi kulübüne üye 4 öğrenci var. Öğrenciler :
Tuncay
Mehmet
Kenan
Lale
Tiyatro kulübüne üye 9 öğrenci var. Öğrenciler :
Jale
Tekin
Mesut
Fatma
Hale
Ayşe
Erhan
Erhan
Erhan
Müzik kulübüne üye 4 öğrenci var. Öğrenciler :
Veli
Ahmet
Cevdet
Nuri
Kitap kulübüne üye 0 öğrenci var. Öğrenciler :
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var KuluplerVeOgrencileri =
Kulupler.GroupJoin(Ogrenciler,
Kulup => Kulup.KayitNo,
Ogrenci => Ogrenci.Kulup,
(Kulup, KulupVeOgrencileri) => new
{
KulupVeOgrencileri = KulupVeOgrencileri,
OgrenciSayisi = KulupVeOgrencileri.Count(),
KulupAdi = Kulup.Adi
});
foreach (var Satir in KuluplerVeOgrencileri)
{
Console.WriteLine("{0} kulübüne üye {1} öğrenci var. Öğrenciler :",
Satir.KulupAdi,
Satir.OgrenciSayisi);
foreach (var a in Satir.KulupVeOgrencileri)
{
Console.WriteLine(a.Adi);
}
}Console.ReadLine();
Join İle Hariçte Kalanlar Dahil Birleştirme (Left Outer Join) Örneği
Join cümleciği, 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. Normal şartlarda 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.
Bu örnek öğrenci bilgilerinden oluşan bir veri kaynağındaki kayıtlar ile
öğrenci kulübü bilgilerinden oluşan
bir başka veri kaynağının elemanlarını kulüp numarası üzerinden
birleştirerek oluşturduğu öğrencilerden oluşan kulüp gruplarının
elemanlarını çıktıya yazar. Örnekte ortak alan (kulüp numarası)
üzerinden eşleşmeyen kulüp satırları da (Kitap Kulübünde hiç üye yok)
DefaultIfEmpty (Boş olanlar için varsayılan değeri kullan) yöntemi yardımıyla çıktı listesine dahil edilmiştir.
var Kulupler = KulupleriGetir();
var Ogrenciler = OgrencileriGetir();
var KuluplerVeOgrencileri =
from Kulup in Kulupler
join Ogrenci in Ogrenciler on Kulup.KayitNo equals Ogrenci.Kulup into KulupVeOgrencileri
from Ogrenci in KulupVeOgrencileri.DefaultIfEmpty()
select new
{
Ogrenci = Ogrenci == null ? "(Öğrenci yok)" : Ogrenci.Adi,
KulupAdi = Kulup.Adi
};
foreach (var Satir in KuluplerVeOgrencileri)
{
Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Ogrenci, Satir.KulupAdi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Tuncay, Gezi kulübüne üye.
Mehmet, Gezi kulübüne üye.
Kenan, Gezi kulübüne üye.
Lale, Gezi kulübüne üye.
Jale, Tiyatro kulübüne üye.
Tekin, Tiyatro kulübüne üye.
Mesut, Tiyatro kulübüne üye.
Fatma, Tiyatro kulübüne üye.
Hale, Tiyatro kulübüne üye.
Ayşe, Tiyatro kulübüne üye.
Erhan, Tiyatro kulübüne üye.
Erhan, Tiyatro kulübüne üye.
Erhan, Tiyatro kulübüne üye.
Veli, Müzik kulübüne üye.
Ahmet, Müzik kulübüne üye.
Cevdet, Müzik kulübüne üye.
Nuri, Müzik kulübüne üye.
(Öğrenci yok), Kitap kulübüne üye.
Kaynak:
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b