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.