Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

LINQ - Kısıtlama (Restriction) Kullanım Örnekleri

Bu makalede kullanılan veri kaynağını görmek için tıklayın.

Basit Where Kullanımı 1

Bu örnek rakamlardan oluşan bir dizideki 5'den küçük rakamları seçer ve bir foreach döngüsü ile çıktıya yazar.

int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

var KucukRakamlar = from Rakam in Rakamlar
where Rakam < 5
select Rakam;

Console.WriteLine("5'den küçük rakamlar...");

foreach (var Rakam in KucukRakamlar)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
5'den küçük rakamlar...
0
1
2
3
4
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

var KucukRakamlar = Rakamlar.Where(Rakam => Rakam < 5);

Console.WriteLine("5'den küçük rakamlar...");

foreach (var Rakam in KucukRakamlar)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();

Basit Where Kullanımı 2

Bu örnek öğrenci bilgilerini içeren bir veri kaynağından başarılı öğrencileri seçer ve foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = from Ogrenci in Ogrenciler
where Ogrenci.Basarili
select Ogrenci;

Console.WriteLine("Başarılı öğrenciler...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Başarılı öğrenciler...
Çağrı, Tuncay
İkinci, Jale
Geçe, Ahmet
Teyze, Fatma
Emre, Mehmet
Hanım, Ayşe
Babayiğit, Nuri
Oran, Kenan
Erkanlı, Erhan
Fidan, Erhan
Çelik, Erhan
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili);

Console.WriteLine("Başarılı öğrenciler...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
}
Console.ReadLine();

Basit Where Kullanımı 3

Bu örnek öğrenci bilgilerini içeren bir veri kaynağından 1. sınıftaki başarılı öğrencileri seçer ve foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = from Ogrenci in Ogrenciler
where Ogrenci.Basarili && Ogrenci.Sinif == 1
select Ogrenci;

Console.WriteLine("1. Sınıftaki Başarılı öğrenciler...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
1. Sınıftaki Başarılı öğrenciler...
Oran, Kenan
Erkanlı, Erhan
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili && Ogrenci.Sinif == 1);

Console.WriteLine("1. Sınıftaki Başarılı öğrenciler...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
}
Console.ReadLine();

Where ve sondaj

Bu örnek öğrenci bilgilerini içeren bir veri kaynağından başarılı öğrencileri seçer ve öğrenci kaydında yer alan notlar isimli bir dizinin elemanlarını da kullanarak başarılı öğrencileri ve ikinci bir foreach aracılığıyla öğrenci notlarını da çıktıya yazar.
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = from Ogrenci in Ogrenciler
where Ogrenci.Basarili
select Ogrenci;

Console.WriteLine("Başarılı öğrencilerin notları...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
foreach (var Notu in Ogrenci.Notlar)
{
Console.Write("{0} ", Notu);
}
Console.WriteLine();
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Başarılı öğrencilerin notları...
Çağrı, Tuncay
75 70 75
İkinci, Jale
100 95 97 96
Geçe, Ahmet
70 80 80
Teyze, Fatma
70 98 97 92
Emre, Mehmet
80 22 97
Hanım, Ayşe
100 40 100
Babayiğit, Nuri
55 75 65
Oran, Kenan
50 70 80
Erkanlı, Erhan
90 90 90 90
Fidan, Erhan
95 70 100 80
Çelik, Erhan
90 55 90
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();

var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili);

Console.WriteLine("Başarılı öğrencilerin notları...");

foreach (var Ogrenci in BasariliOgrenciler)
{
Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
foreach (var Notu in Ogrenci.Notlar)
{
Console.Write("{0} ", Notu);
}
Console.WriteLine();
}
Console.ReadLine();

Dizinli Where Kullanımı (Where Indexed)

Where cümleciğinin 2. kullanım şekli bir Lambda İfadesine (İsimsiz fonksiyona) sıradaki elemanı ve elemanın 0 tabanlı sıra numarasını döndürür. Biz de 2 parametreli bir Lambda İfadesi ile sıradaki eleman ve elemanın sıra numarası (index) bilgisi ile ilgili işlemler gerçekleştirebiliriz.

Bu örnek öğrenci bilgilerini içeren bir veri kaynağından veri kaynağında numarası ile aynı sırada bulunan (Örneğin 11. sıradaki elemanın numarası 11 ise) öğrencileri seçer ve bir foreach çıktısı ile seçilen öğrencileri çıktıya yazar.
var Ogrenciler = OgrencileriGetir();

var OgrenciListesi = Ogrenciler.Where((Ogrenci, Index) => Ogrenci.No == Index + 1);

Console.WriteLine("Listede numarası ile aynı sırada bulunan öğrenciler...");

foreach (var ListeSatiri in OgrenciListesi)
{
Console.WriteLine("{0} - {1}, {2}",
ListeSatiri.No,
ListeSatiri.Soyadi,
ListeSatiri.Adi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Listede numarası ile aynı sırada bulunan öğrenciler...
6 - Geçe, Ahmet
11 - Döğer, Cevdet
16 - Fidan, Erhan
17 - Çelik, Erhan
Dizinli where yöntemi Func<T1, T2, TResult>(T1 arg1, T2 arg2)  delegesi ile temsil edilen ve Lambda İfadesi şeklinde yazdığımız bir isimsiz fonksiyon kullanır. Bu isimsiz fonksiyona 2 parametre geçer. 1. parametre o anda sayılan elemanın kendisi, 2. parametre olarak da elemanın sırası 0 tabanlı olarak (ilk elemanın numarası 0) döndürülür. Biz de elemanın kendisini ve sirasını kullanarak isimsiz fonksiyon içinde işlemler gerçekleştirebiliriz.

Şimdiye kadarki örneklerimizde where yöntemine Func<T1, TResult>(T1 arg1)  ile temsil edilen, tek parametreli bir lambda ifadesi, örneğin Ogrenci => Ogrenci.Basarili  kullanmıştık.

Kaynak:
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b




Diğer LINQ Makaleleri:


Yazan: 10.04.16 16:43

101,387p 4ü