C# Lambda Expressions Kullanımı

Bu yazımda sizlere lambda expression kullanarak bazı sorgulama örnekleri göstereceğim. Umarım faydasını görürsünüz.

Basit olması açısından elimizde aşağıdaki gibi verilerimiz olsun.

 

List<Personel> liste = new List<Personel>()
{
    new Personel() { Ad="Mehmet", Yasi = 23 },

    new Personel() { Ad="Fatma", Yasi = 22 },

    new Personel() { Ad="Mustafa", Yasi = 20 },

    new Personel() { Ad="Ayşe", Yasi = 21 },
};

public class Personel
{
    public string Ad { get; set; }

    public int Yasi { get; set; }
}

 

* Where Kullanımı
Liste üzerinde verilen koşula göre değerleri getirir.

liste.Where(x => x.Ad == "Mehmet").ToList(); 
//Adı "Mehmet" olanların listesini getirir.

 
* Select Kullanımı
İstenilen kolonların getirilmesini sağlar.

liste.Where(x => x.Ad == "Fatma").Select(x => x.Yasi).ToList(); 
//Adı "Fatma" olanların yaşını getirir.

 
* OrderBy ve OrderByDescending Kullanımı
OrderBy, küçükten büyüğe doğru yani artan sıralama yapar, OrderByDescending ise tam tersi sıralama yapar yani büyükten küçüğe doğru sıralar, azalan sıralama yapar.

liste.OrderBy(x => x.Yasi).ToList(); 
//Yaşa göre sıralama yapar, sırasıyla 20,21,22,23 olanları getirir. (Artan sıralama)

 
* Skip Kullanımı
Liste üzerinde istediğimiz satır sayısı kadar atlama yapar. Örneğin Skip(3) dediğimizde 0. 1. ve 2. elemanları atlar ve direk 3.elemandan başlar.

liste.OrderBy(x => x.Yasi).Skip(3).ToList();
//Burada yaşa göre sıralama yapar, sonuç ise yaşı 20,21 ve 22 olanları atladığı için 23 Mehmet'dir.

 
* Take Kullanımı
Liste üzerindeki en baştan istenilen eleman sayısını almamızı sağlar. SQL’deki select top… gibi düşünebiliriz.

liste.Where(x => x.Ad.Contains("a")).Take(1).ToList();
//Burada adında "a" içeren elemanları getir dedik, normalde "Fatma" ve "Mustafa" gelicekti, ama Take(1) dediğimiz için yalnızca "Fatma" gelecek.

 
* Any Kullanımı
Geriye bool tipinde değer döndürür, şartı sağlayan kayıt varsa true, yoksa false döndürür.

liste.Any(x => x.Ad == "Ayşe"); //Kayıt var olduğu için True değeri döner.

 
Bu kullanımlara ek olarak ekstra bazı sorgularda göstermek istiyorum,

liste.Where(p => p.Yasi > 21).OrderBy(p => p.Ad).Select(p => p.Ad).ToList();
//Yaşı 21'den büyük olanların isimlerini sıralar ve sadece isimlerini getirir.
liste.FirstOrDefault(p => p.Yasi == 23).Ad;
//Yaşı 23 olan personelin Adını getirir. Sonuç "Mehmet" olarak geri döner.
liste.Where(p => p.Ad.Contains("e")).ToList();
//Adında "e" harfi geçenleri listeler, sonuç size "Mehmet" ve "Ayşe" olarak gelir.
liste.Where(p => p.Ad.StartsWith("M")).ToList();
//Adı "M" ile başlayanları getirir. Sonuç size "Mehmet" ve "Mustafa" olarak gelir.
liste.Sum(p => p.Yasi); //Liste üzerindeki bütün yaşları toplar, geriye "86" sonucu döner.
liste.Where(x => x.Yasi == liste.Max(y => y.Yasi)).Select(p => p.Ad).FirstOrDefault(); //Yaşı Max olan personelin ismini getirir, sonuç "Mehmet" olarak geri döner.
liste.Find(p => p.Yasi == 21).Ad; //Yaşı 21 olan kişinin adını getirir. Sonuç "Ayşe" olarak geri döner.

 
Ayrıca Single, SingleOrDefault ve First, FirstOrDefault hakkında detaylı bilgi için aşağıdaki yazıma göz atabilirsiniz.

Single SingleOrDefault ve First FirstOrDefault Farkları

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir