Bu makalede bazı örneklerde kullanılan
veri kaynağını görmek için tıklayın.
Distinct (Farklı) Örnekleri
Distinct (farklı) yöntemi, bir veri kümesindeki tekrarları atarak yeni bir liste oluşturmak için kullanılır.
Distinct İle Tekrarlı Olmayan Listeler Oluşturma Örneği 1
Aşağıdaki örnek bir tamsayı dizisindeki farklı tamsayıları seçer ve seçtiklerini çıktıya yazar.
int[] BaziRakamlar = new int[] { 1, 2, 2, 3, 4, 4, 4, 5, 5, 6 };
var TekrarlariAtilmisDizi = BaziRakamlar.Distinct();
Console.WriteLine("Dizideki farklı rakamlar :");
foreach (var Rakam in TekrarlariAtilmisDizi)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Dizideki farklı rakamlar :
1
2
3
4
5
6
Distinct İle Tekrarlı Olmayan Listeler Oluşturma Örneği 2
Aşağıdaki örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci kulüp kayıt numaralarını
seçer ve oluşturduğu listeden Distinct ile tekrarları atarak yeni bir kulüp kayıt numaraları listesi oluşturur.
var Ogrenciler = OgrencileriGetir();
var UyeOlunanKuluplerinNumaralari = (from Ogrenci in Ogrenciler
select Ogrenci.Kulup).Distinct();
Console.WriteLine("Öğrencilerin üye olduğu kulüplerin kayıt numaraları :");
foreach (var KayitNumarasi in UyeOlunanKuluplerinNumaralari)
{
Console.WriteLine(KayitNumarasi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Öğrencilerin üye olduğu kulüplerin kayıt numaraları :
0
1
2
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var UyeOlunanKuluplerinNumaralari = Ogrenciler.Select(Ogrenci => Ogrenci.Kulup).Distinct();
Console.WriteLine("Öğrencilerin üye olduğu kulüplerin kayıt numaraları :");
foreach (var KayitNumarasi in UyeOlunanKuluplerinNumaralari)
{
Console.WriteLine(KayitNumarasi);
}
Console.ReadLine();
Union (Birleşim) Örnekleri
Union (birleşim) yöntemi, bir veri kümesini ikinci bir veri kümesi ile
birleştirip, tekrarları atarak bir liste oluşturmak için kullanılır.
Union İle Birleşim Örneği 1
Aşağıdaki örnek bir tamsayı dizisinin elemanlarını ikinci bir tamsayı dizisinin elamanları ile birleştirip tekrarları
atarak oluşturduğu yeni listeyi çıktıya yazar.
int[] Rakamlar1 = { 1, 2, 4, 5 };
int[] Rakamlar2 = { 1, 3, 4, 6 };
var DizilerdekiBenzersizRakamlar = Rakamlar1.Union(Rakamlar2);
Console.WriteLine("Her iki dizideki rakamların benzer rakamlar atılmış listesi :");
foreach (var n in DizilerdekiBenzersizRakamlar)
{
Console.WriteLine(n);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Her iki dizideki rakamların benzer rakamlar atılmış listesi :
1
2
4
5
3
6
Union İle Birleşim Örneği 2
Aşağıdaki örnek öğrenci bilgilerini içeren bir veri kümesinden seçtiği
öğrencilerin 1. sınav notları ile oluşturduğu listeyle yine aynı veri
kaynağından seçtiği 2. sınav notlarından oluşan listeyi Union ile
birleştirip tekrar eden notları atarak oluşturduğu yeni listeyi çıktıya
yazar.
var Ogrenciler = OgrencileriGetir();
var BirinciSinavNotlari = from Ogrenci in Ogrenciler
select Ogrenci.Notlar[0];
var IkinciSinavNotlari = from Ogrenci in Ogrenciler
select Ogrenci.Notlar[1];
var FarkliNotlar = BirinciSinavNotlari.Union(IkinciSinavNotlari);
Console.WriteLine("1. ve 2. sınavlarda alınan farklı notlar :");
foreach (var Notu in FarkliNotlar)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
1. ve 2. sınavlarda alınan farklı notlar :
75
100
30
70
80
20
55
50
90
95
40
10
98
22
0
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var BirinciSinavNotlari = Ogrenciler.Select(Ogrenci => Ogrenci.Notlar[0]);
var IkinciSinavNotlari = Ogrenciler.Select(Ogrenci => Ogrenci.Notlar[1]);
var FarkliNotlar = BirinciSinavNotlari.Union(IkinciSinavNotlari);
Console.WriteLine("1. ve 2. sınavlarda alınan farklı notlar :");
foreach (var Notu in FarkliNotlar)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Intersect İle Kesişim Örnekleri
Intersect (kesişim) yöntemi, iki veri kümesindeki aynı olan elemanlardan bir liste oluşturur.
Intersect İle Kesişim Örneği 1
Aşağıdaki örnek 2 tamsayı dizisinde de bulunan elemanlardan yeni bir liste oluşturup çıktıya yazar.
int[] Rakamlar1 = { 1, 2, 4, 5 };
int[] Rakamlar2 = { 1, 3, 4, 6 };
var DizilerdeTekrarlananRakamlar = Rakamlar1.Intersect(Rakamlar2);
Console.WriteLine("Her iki dizide de bulunan rakamlar :");
foreach (var n in DizilerdeTekrarlananRakamlar)
{
Console.WriteLine(n);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Her iki dizide de bulunan rakamlar :
1
4
Intersect İle Kesişim Örneği 2
Aşağıdaki örnek öğrenci bilgilerini içeren bir veri kaynağından başarılı
öğrencilerin 1. sınav notlarından oluşturduğu bir liste ile aynı veri
kaynağından oluşturduğu başarısız öğrencilerin 1. sınav notlarından
oluşan listedeki ortak notları seçer ve çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var BasariliOgrencilerinBirinciSinavNotlari =
from Ogrenci in Ogrenciler
where Ogrenci.Basarili
select Ogrenci.Notlar[0];
var BasarisizOgrencilerinBirinciSinavNotlari =
from Ogrenci in Ogrenciler
where !Ogrenci.Basarili
select Ogrenci.Notlar[0];
var BasariyaGoreOrtakBirinciSinavNotlari =
BasariliOgrencilerinBirinciSinavNotlari.Intersect(BasarisizOgrencilerinBirinciSinavNotlari);
Console.WriteLine("Başarılı ve başarısız öğrencilerin aldığı ortak 1. sınav notları :");
foreach (var Notu in BasariyaGoreOrtakBirinciSinavNotlari)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Başarılı ve başarısız öğrencilerin aldığı ortak 1. sınav notları :
70
80
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var BasariliOgrencilerinBirinciSinavNotlari =
Ogrenciler.Where(Ogrenci => Ogrenci.Basarili)
.Select(Ogrenci => Ogrenci.Notlar[0]);
var BasarisizOgrencilerinBirinciSinavNotlari =
Ogrenciler.Where(Ogrenci => !Ogrenci.Basarili)
.Select(Ogrenci => Ogrenci.Notlar[0]);
var BasariyaGoreOrtakBirinciSinavNotlari =
BasariliOgrencilerinBirinciSinavNotlari.Intersect(BasarisizOgrencilerinBirinciSinavNotlari);
Console.WriteLine("Başarılı ve başarısız öğrencilerin aldığı ortak 1. sınav notları :");
foreach (var Notu in BasariyaGoreOrtakBirinciSinavNotlari)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Except İle Haricinde Olanları Seçme Örnekleri
Except (dışında) yöntemi, iki veri kümesindeki elemanları
karşılaştırarak, 1. veri kümesinde bulunup da 2. veri kümesinde
bulunmayanları seçip yeni bir liste oluşturur.
Except İle Haricindekileri Seçme Örneği 1
Aşağıdaki örnek bir tamsayı dizisindeki ikinci bir tamsayı dizisinde
bulunmayan tam sayıları seçerek oluşturduğu listeyi çıktıya yazar.
int[] Rakamlar1 = { 1, 2, 4, 5 };
int[] Rakamlar2 = { 1, 3, 4, 6 };
var SadeceBirincidekiRakamlar = Rakamlar1.Except(Rakamlar2);
Console.WriteLine("Birinci dizinin ikinci diziden farklı elemanları :");
foreach (var n in SadeceBirincidekiRakamlar)
{
Console.WriteLine(n);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Birinci dizinin ikinci diziden farklı elemanları :
2
5
Except İle Haricindekileri Seçme Örneği 2
Aşağıdaki örnek, öğrenci bilgilerini içeren bir veri kaynağından seçtiği
1. sınav notları ile 2. sınav notlarını içeren listeleri karşılaştırıp,
1. sınavda olup da 2. sınavda olmayan notları seçerek oluşturduğu
listeyi çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var BirinciSinavdakiNotlar =
from Ogrenci in Ogrenciler
select Ogrenci.Notlar[0];
var IkinciSinavdakiNotlar =
from Ogrenci in Ogrenciler
select Ogrenci.Notlar[1];
var BirinciSinavdaOlupIkinciSinavdaOlmayanNotlar =
BirinciSinavdakiNotlar.Except(IkinciSinavdakiNotlar);
Console.WriteLine("1. sınavda olup da 2. sınavda olmayan notlar :");
foreach (var Notu in BirinciSinavdaOlupIkinciSinavdaOlmayanNotlar)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
1. sınavda olup da 2. sınavda olmayan notlar :
100
30
20
50
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var BirinciSinavdakiNotlar = Ogrenciler.Select(Ogrenci => Ogrenci.Notlar[0]);
var IkinciSinavdakiNotlar = Ogrenciler.Select(Ogrenci => Ogrenci.Notlar[1]);
var BirinciSinavdaOlupIkinciSinavdaOlmayanNotlar =
BirinciSinavdakiNotlar.Except(IkinciSinavdakiNotlar);
Console.WriteLine("1. sınavda olup da 2. sınavda olmayan notlar :");
foreach (var Notu in BirinciSinavdaOlupIkinciSinavdaOlmayanNotlar)
{
Console.WriteLine(Notu);
}
Console.ReadLine();
Kaynak:
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b