Lambda ifadelerinden bazı methodlar ve kullanımları

Merhaba arkadaşlar. Bu makale lambda ifadelerinden  bazı methodları ve kullanımlarını anlatacağım.

Öncelikle basit bir class ve o class'tan oluşacak bir liste yapıyorum.

public class liste 
{
    public string ad { get; set; }
    public int sira  { get; set; }
    public bool aktif { get; set;}
}
   List<liste> a = new List<liste>();
   a.Add(new liste { ad="A", sira=5, aktif=true });
   a.Add(new liste { ad = "B", sira = 4,aktif=false });
   a.Add(new liste { ad = "C", sira = 1, aktif=true });
   a.Add(new liste { ad = "D", sira = 3, aktif=false});
   a.Add(new liste { ad = "E", sira = 2, aktif=false });

OrderBy: Herhangi bir değişkene göre küçükten büyüğe sıralamaya yarar

Örn: 

var siraliste = a.OrderBy(o=>o.sira).ToList();

for (int i = 0; i < siraliListe.Count(); i++)
        {
           Response.Write("Değişken: "+siraliListe[i].ad+" Sıra: "+siraliListe[i].sira);
        }

Çıktısı: 

Değişken: C Sıra: 1
Değişken: E Sıra: 2

Değişken: D Sıra: 3

Değişken: B Sıra: 4

Değişken: A Sıra: 5

OrderByDescending : OrderBy methodunun tam tersi. Büyükten küçüğe sıralamaya yarar.

Çıktısı:

Değişken: A Sıra: 5

Değişken: B Sıra: 4

Değişken: D Sıra: 3

Değişken: E Sıra: 2

Değişken: C Sıra: 1

ThenBy:  Önceden sıralanmış bir listeyi tekrar sıralamaya yarar. 

var siraliste = a.OrderBy(o=>o.aktif).ThenBy(t=>f.sira).ToList();

for (int i = 0; i < siraliListe.Count(); i++)
        {
           Response.Write("Değişken: "+siraliListe[i].ad+" Sıra: "+siraliListe[i].sira+"Durum:"+siraliListe[i].aktif);
        }

Çıktısı: 

Değişken: E Sıra: 2  Durum:  false

Değişken: D Sıra: 3  Durum:  false 

Değişken: B Sıra: 4  Durum:  false

Değişken: C Sıra: 1  Durum:  true

Değişken: A Sıra: 5  Durum:  true

Önce aktiflik durumuna göre küçükten büyüğe sıraladı. Sonra kendi içlerinde sıra değişkenine göre sıraladı.

ThenByDescending: ThenBy Methodunun tam tersi şeklinde çalışır.

Değişken: A Sıra: 5  Durum:  true

Değişken: C Sıra: 1  Durum:  true

Değişken: B Sıra: 4  Durum:  false

Değişken: D Sıra: 3  Durum:  false 

Değişken: E Sıra: 2  Durum:  false

Take: Var olan listeden içine aldığı değer kadarını tutulmasını sağlar

var yeni_liste = a.Take(2).ToList();

for (int i = 0; i < yeni_liste.Count(); i++)
        {
           Response.Write("Değişken: "+yeni_liste[i].ad+" Sıra: "+yeni_liste[i].sira+"Durum:"+yeni_liste[i].aktif);
        }

Çıktı 

Değişken: A Sıra: 5 Durum: true

Değişken: B Sıra: 4 Durum: false

Skip: İçine aldığı integer değerden sonrasını alır. Tabiri caizse X tanesini Skip Atıyosunuz :D

var yeni_liste = a.Skip(2).ToList();

for (int i = 0; i < yeni_liste.Count(); i++)
        {
           Response.Write("Değişken: "+yeni_liste[i].ad+" Sıra: "+yeni_liste[i].sira+"Durum:"+yeni_liste[i].aktif);
        }

Çıktı 

Değişken: C Sıra: 1  Durum:  true

Değişken: D Sıra: 3  Durum:  false 

Değişken: E Sıra: 2  Durum:  false
Where: Liste içinde belirlenen koşula uygun olanları almaya yarar.
Örn. Sırası 3'den büyük ve Durumu false olanları almak istersek.
 
var yeni_liste = a.Where(w=>w.sira>3&&w.aktif==false).ToList();
 
for (int i = 0; i < yeni_liste.Count(); i++)
        {
           Response.Write("Değişken: "+yeni_liste[i].ad+" Sıra: "+yeni_liste[i].sira+"Durum:"+yeni_liste[i].aktif);
        }

Çıktı 

Değişken: B Sıra: 4  Durum:  false

İyi Kodlar!