Bu makalede kullanılan
veri kaynağını görmek için tıklayın.
Basit Take Örneği
Take yöntemi, bir listeden baştan itibaren istenilen sayıdaki elemanlarını verir.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağından seçtiği ilk 5 sıradaki öğrencilerin ad ve soyad bilgilerinden
bir isimsiz tip oluşturup seçer ve bunu bir foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var Ilk5Ogrenci = Ogrenciler.Take(5);
Console.WriteLine("Listedeki ilk 5 öğrenci :");
foreach (var Ogrenci in Ilk5Ogrenci)
{
Console.WriteLine("{0} {1}", Ogrenci.Adi, Ogrenci.Soyadi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Listedeki ilk 5 öğrenci :
Tuncay Çağrı
Jale İkinci
Tekin Uğurlu
Mesut Bahtiyar
Veli Canlı
Yuvalanmış (Nested) Take Örneği
Take yöntemi (Enumerable.Take), bir listenin baştan istenilen sayıda elemanını seçer. Take, aşağıdaki
örnekte olduğu gibi bir sorgunun sonuna eklenebilir.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki tam not alan öğrencilerden ilk 2 tanesinin adı ve not
bilgilerinden bir isimsiz tip oluşturup seçer ve bunu bir foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var Ilk2TamNot = (from Ogrenci in Ogrenciler
from Not in Ogrenci.Notlar
where Not == 100
select new {Ogrenci.Adi, Not}).Take(2);
Console.WriteLine("İlk 2 tam not :");
foreach (var Satir in Ilk2TamNot)
{
Console.WriteLine("{0} {1}", Satir.Adi, Satir.Not);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
İlk 2 tam not :
Jale 100
Ayşe 100
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var Ilk2TamNot =
Ogrenciler.SelectMany(Ogrenci => Ogrenci.Notlar.Where(Notu => Notu == 100)
,
(Ogrenci, Notu) => new { Ogrenci.Adi, Not = Notu }
).Take(2);
Console.WriteLine("İlk 2 tam not :");
foreach (var Satir in Ilk2TamNot)
{
Console.WriteLine("{0} {1}", Satir.Adi, Satir.Not);
}
Console.ReadLine();
Basit Skip Örneği
Skip yöntemi (
Enumerable.Skip), bir listenin baştan istenilen sayıda elemanını atlar ve sonraki
elemanları seçer.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki son 2 öğrencinin adı ve soyadı
bilgilerinden bir isimsiz tip oluşturup seçer ve bunu bir foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var Son2Ogrenci = (from Ogrenci in Ogrenciler
select Ogrenci).Skip(Ogrenciler.Count() - 2);
Console.WriteLine("Listedeki son 2 öğrenci :");
foreach (var Ogrenci in Son2Ogrenci)
{
Console.WriteLine("{0} {1}", Ogrenci.Adi, Ogrenci.Soyadi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Listedeki son 2 öğrenci :
Erhan Fidan
Erhan Çelik
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var Son2Ogrenci = Ogrenciler.Skip(Ogrenciler.Count() - 2);
Console.WriteLine("Listedeki son 2 öğrenci :");
foreach (var Ogrenci in Son2Ogrenci)
{
Console.WriteLine("{0} {1}", Ogrenci.Adi, Ogrenci.Soyadi);
}Console.ReadLine();
Yuvalanmış (Nested) Skip Örneği
Skip yöntemi (
Enumerable.Skip), bir listenin baştan istenilen sayıda elemanını atlar ve sonraki
elemanları seçer. Alttaki örnekte görüldüğü gibi Skip, bir sorgunun sonuna eklenebilir.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki ilk 2 tam not alan öğrenciden
sonraki tam not alan öğrencilerin adı ve notu bilgilerinden bir isimsiz tip oluşturup
seçer ve bunu bir foreach döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var Ilk2DenSonrakiTamNotlar = (from Ogrenci in Ogrenciler
from Not in Ogrenci.Notlar
where Not == 100
select new { Ogrenci.Adi, Not }).Skip(2);
Console.WriteLine("İlk 2 tam notdan sonraki tam notlar :");
foreach (var Satir in Ilk2DenSonrakiTamNotlar)
{
Console.WriteLine("{0} {1}", Satir.Adi, Satir.Not);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
İlk 2 tam notdan sonraki tam notlar :
Ayşe 100
Erhan 100
Aynı örnek, LINQ Yöntem Sözdizimi (LINQ Method Syntax) ile şu şekilde yazılabilir:
var Ogrenciler = OgrencileriGetir();
var Ilk2DenSonrakiTamNotlar =
Ogrenciler.SelectMany(Ogrenci => Ogrenci.Notlar.Where(Notu => Notu == 100)
,
(Ogrenci, Notu) => new { Ogrenci.Adi, Not = Notu }
).Skip(2);
Console.WriteLine("İlk 2 tam notdan sonraki tam notlar :");
foreach (var Satir in Ilk2DenSonrakiTamNotlar)
{
Console.WriteLine("{0} {1}", Satir.Adi, Satir.Not);
}Console.ReadLine();
Basit TakeWhile Örneği
TakeWhile yöntemi (
Enumerable.TakeWhile), bir listenin baştan itibaren verilen bir şarta uyan elemanlarını
seçer şart sağlandığı sürece seçer.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki ilk başarısız öğrenciye kadar olan öğrencilerin
adı, soyadı ve not ortalaması bilgilerinden bir isimsiz tip oluşturup seçer ve bunu bir foreach
döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var IlkBasarililar = Ogrenciler.TakeWhile(Ogrenci => Ogrenci.Ortalama >= 55);
Console.WriteLine("İlk başarısız öğrenciye kadar öğrenciler :");
foreach (var BasariliOgrenci in IlkBasarililar)
{
Console.WriteLine("{0} {1}, ortalaması : {2:0.00}", BasariliOgrenci.Adi, BasariliOgrenci.Soyadi, BasariliOgrenci.Ortalama);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
İlk başarısız öğrenciye kadar öğrenciler :
Tuncay Çağrı, ortalaması : 73,33
Jale İkinci, ortalaması : 97,00
Dizinli (Indexed) TakeWhile Örneği
TakeWhile yönteminin (
Enumerable.TakeWhile) 2. kullanım şeklinde yöntem
tarafından, listenin sıradaki elemanı ve aynı zamanda elemanın listedeki
sıra numarası Lambda İfadesi olarak tanımlanabilecek bir isimsiz
fonksiyona geçilir. Biz de bu fonksiyon yardımı ile kayıt atlama
sürecinde elemanın sıra numarası ile ilgili olarak dikkate alınacak
durumları işleriz.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağından sıra numarasına
(index) bakarak seçtiği ilk 5 öğrencinin ad ve soyad bilgilerinden bir
isimsiz tip oluşturup seçer ve bunu bir foreach döngüsü ile çıktıya
yazar.
var Ogrenciler = OgrencileriGetir();
var Ilk5Ogrenci = Ogrenciler.TakeWhile((Ogrenci, Index) => Index <= 4);
Console.WriteLine("İlk 5 öğrenci :");
foreach (var Ogrenci in Ilk5Ogrenci)
{
Console.WriteLine("{0} {1}", Ogrenci.Adi, Ogrenci.Soyadi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
İlk 5 öğrenci :
Tuncay Çağrı
Jale İkinci
Tekin Uğurlu
Mesut Bahtiyar
Veli Canlı
Basit SkipWhile Örneği
SkipWhile yöntemi (
Enumerable.SkipWhile), bir listenin baştan itibaren verilen bir şarta uyan elemanlarını
şart sağlandığı sürece atlar ve sonraki elemanlarını seçer.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki ilk başarısız öğrenciye kadar atlayıp, bu öğrenci
ve sonraki öğrencilerin adı, soyadı ve yaş bilgilerinden bir isimsiz tip oluşturup seçer ve bunu bir foreach
döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var IlkBasarisizVeSonrasi = Ogrenciler.SkipWhile(Ogrenci => Ogrenci.Ortalama >= 55);
Console.WriteLine("İlk başarısız öğrenci ve sonraki öğrenciler :");
foreach (var Ogrenci in IlkBasarisizVeSonrasi)
{
Console.WriteLine("{0} {1}, yaşı {2}.", Ogrenci.Adi, Ogrenci.Soyadi, Ogrenci.Yasi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
İlk başarısız öğrenci ve sonraki öğrenciler :
Tekin Uğurlu, yaşı 58.
Mesut Bahtiyar, yaşı 33.
Veli Canlı, yaşı 20.
Ahmet Geçe, yaşı 55.
Fatma Teyze, yaşı 41.
Mehmet Emre, yaşı 43.
Hale Birinci, yaşı 31.
Ayşe Hanım, yaşı 30.
Cevdet Döğer, yaşı 46.
Nuri Babayiğit, yaşı 15.
Kenan Oran, yaşı 52.
Lale Üçüncü, yaşı 23.
Erhan Erkanlı, yaşı 55.
Erhan Fidan, yaşı 45.
Erhan Çelik, yaşı 35.
Dizinli (Indexed) SkipWhile Örneği
SkipWhile yönteminin (
Enumerable.SkipWhile 2. kullanım şeklinde yöntem
tarafından, listenin sıradaki elemanı ve aynı zamanda elemanın listedeki
sıra numarası Lambda İfadesi olarak tanımlanabilecek bir isimsiz
fonksiyona geçilir. Biz de bu fonksiyon yardımı ile kayıt atlama
sürecinde elemanın sıra numarası ile ilgili olarak dikkate alınacak
durumları işleriz.
Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki ilk 8 öğrenciye kadar olan öğrencileri atlayıp, bu öğrenci
ve sonraki öğrencilerin adı ve soyadı bilgilerinden bir isimsiz tip oluşturup seçer ve bunu bir foreach
döngüsü ile çıktıya yazar.
var Ogrenciler = OgrencileriGetir();
var SekizinciVeSonrasi = Ogrenciler.SkipWhile((Ogrenci, Index) => Index < 7);
Console.WriteLine("Sekizinci öğrenci ve sonrakiler :");
foreach (var Ogrenci in SekizinciVeSonrasi)
{
Console.WriteLine("{0} {1}", Ogrenci.Adi, Ogrenci.Soyadi);
}
Console.ReadLine();
Örneğin çıktısı şöyle olacaktır :
Sekizinci öğrenci ve sonrakiler :
Mehmet Emre
Hale Birinci
Ayşe Hanım
Cevdet Döğer
Nuri Babayiğit
Kenan Oran
Lale Üçüncü
Erhan Erkanlı
Erhan Fidan
Erhan Çelik
Kaynak:
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b