Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Bu siteyi 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.

  1. int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  2. var KucukRakamlar = from Rakam in Rakamlar
  3. where Rakam < 5
  4. select Rakam;
  5. Console.WriteLine("5'den küçük rakamlar...");
  6. foreach (var Rakam in KucukRakamlar)
  7. {
  8. Console.WriteLine(Rakam);
  9. }
  10. Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
  1. 5'den küçük rakamlar...
  2. 0
  3. 1
  4. 2
  5. 3
  6. 4
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
  1. int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  2. var KucukRakamlar = Rakamlar.Where(Rakam => Rakam < 5);
  3. Console.WriteLine("5'den küçük rakamlar...");
  4. foreach (var Rakam in KucukRakamlar)
  5. {
  6. Console.WriteLine(Rakam);
  7. }
  8. 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.
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = from Ogrenci in Ogrenciler
  3. where Ogrenci.Basarili
  4. select Ogrenci;
  5. Console.WriteLine("Başarılı öğrenciler...");
  6. foreach (var Ogrenci in BasariliOgrenciler)
  7. {
  8. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  9. }
  10. Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
  1. Başarılı öğrenciler...
  2. Çağrı, Tuncay
  3. İkinci, Jale
  4. Geçe, Ahmet
  5. Teyze, Fatma
  6. Emre, Mehmet
  7. Hanım, Ayşe
  8. Babayiğit, Nuri
  9. Oran, Kenan
  10. Erkanlı, Erhan
  11. Fidan, Erhan
  12. Çelik, Erhan
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili);
  3. Console.WriteLine("Başarılı öğrenciler...");
  4. foreach (var Ogrenci in BasariliOgrenciler)
  5. {
  6. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  7. }
  8. 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.
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = from Ogrenci in Ogrenciler
  3. where Ogrenci.Basarili && Ogrenci.Sinif == 1
  4. select Ogrenci;
  5. Console.WriteLine("1. Sınıftaki Başarılı öğrenciler...");
  6. foreach (var Ogrenci in BasariliOgrenciler)
  7. {
  8. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  9. }
  10. Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
  1. 1. Sınıftaki Başarılı öğrenciler...
  2. Oran, Kenan
  3. Erkanlı, Erhan
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili && Ogrenci.Sinif == 1);
  3. Console.WriteLine("1. Sınıftaki Başarılı öğrenciler...");
  4. foreach (var Ogrenci in BasariliOgrenciler)
  5. {
  6. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  7. }
  8. 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.
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = from Ogrenci in Ogrenciler
  3. where Ogrenci.Basarili
  4. select Ogrenci;
  5. Console.WriteLine("Başarılı öğrencilerin notları...");
  6. foreach (var Ogrenci in BasariliOgrenciler)
  7. {
  8. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  9. foreach (var Notu in Ogrenci.Notlar)
  10. {
  11. Console.Write("{0} ", Notu);
  12. }
  13. Console.WriteLine();
  14. }
  15. Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
  1. Başarılı öğrencilerin notları...
  2. Çağrı, Tuncay
  3. 75 70 75
  4. İkinci, Jale
  5. 100 95 97 96
  6. Geçe, Ahmet
  7. 70 80 80
  8. Teyze, Fatma
  9. 70 98 97 92
  10. Emre, Mehmet
  11. 80 22 97
  12. Hanım, Ayşe
  13. 100 40 100
  14. Babayiğit, Nuri
  15. 55 75 65
  16. Oran, Kenan
  17. 50 70 80
  18. Erkanlı, Erhan
  19. 90 90 90 90
  20. Fidan, Erhan
  21. 95 70 100 80
  22. Çelik, Erhan
  23. 90 55 90
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
  1. var Ogrenciler = OgrencileriGetir();
  2. var BasariliOgrenciler = Ogrenciler.Where(Ogrenci => Ogrenci.Basarili);
  3. Console.WriteLine("Başarılı öğrencilerin notları...");
  4. foreach (var Ogrenci in BasariliOgrenciler)
  5. {
  6. Console.WriteLine("{0}, {1}", Ogrenci.Soyadi, Ogrenci.Adi);
  7. foreach (var Notu in Ogrenci.Notlar)
  8. {
  9. Console.Write("{0} ", Notu);
  10. }
  11. Console.WriteLine();
  12. }
  13. 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.
  1. var Ogrenciler = OgrencileriGetir();
  2. var OgrenciListesi = Ogrenciler.Where((Ogrenci, Index) => Ogrenci.No == Index + 1);
  3. Console.WriteLine("Listede numarası ile aynı sırada bulunan öğrenciler...");
  4. foreach (var ListeSatiri in OgrenciListesi)
  5. {
  6. Console.WriteLine("{0} - {1}, {2}",
  7. ListeSatiri.No,
  8. ListeSatiri.Soyadi,
  9. ListeSatiri.Adi);
  10. }
  11. Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
  1. Listede numarası ile aynı sırada bulunan öğrenciler...
  2. 6 - Geçe, Ahmet
  3. 11 - Döğer, Cevdet
  4. 16 - Fidan, Erhan
  5. 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ü