C# ile LINQ filtrelerinin üç farklı kullanımı (Predicate Function, Anonymous Method, Lambda Expression)
Listeler (IEnumerable<T> interface’ini implemente eden) üzerinde filtreleme yapmak için .Net 3.0’dan beri LINQ sorgularını kullanabiliyoruz.
LINQ ile gelen farklı operatör grupları sayesinde, listeler üzerinde sadece filtreleme yapmanın ötesinde bir kontrolümüz oluyor (daha detaylı bilgi için MSDN’de yeralan The .Net Standard Query Operators makalesini okuyabilirsiniz);
- Filtreleme Operatörleri : Where
- Gruplama Operatörleri : GroupBy
- Sıralama Operatörleri : OrderBy, ThenBy, OrderByDescending, ThenByDescending
- Bölümleme Operatörleri : Take, Skip, TakeWhile, SkipWhile
- Seçme Operatörleri : Select
- Küme Operatörleri : Distinct, Union, Intersect, Except
- Dönüştürme Operatörleri : ToArray, ToList, ToDictionary, OfType
- Eleman Operatörleri : First, FirstOrDefault, Single, SingleOrDefault, ElementAt
- Üretim Operatörleri : Range, Repeat
- Gruplama Fonksiyonu Operatörleri : Count, Sum, Min, Max, Average
- Sayım Operatörleri : Any, All
- Diğer Operatörler : Concat, EqualAll
Bu yazımda, bir liste uzerinde LINQ sorgusu gerçekleştirmenin 3 farklı yolunu inceleyeceğiz;
- Predicate
- Anonymous Method
- Lambda Sorgusu
Öncelikle üzerinde çalışacağımız bir listeye ihtiyacımız olacak, Enumerable sınıfının static Range method’u ile iki değer aralığındaki tam sayılardan oluşan listeyi kullanabiliriz;
Enumerable.Range(50, 100);
Predicate
private static bool CiftSayiKontrol(int Rakam)
{
if (Rakam % 2 == 0)
return true;
else
return false;
}
public static void Main(string[] args)
{
var SonucListe = Enumerable.Range(1, 20).Where(CiftSayiKontrol);
foreach (var Rakam in SonucListe)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();
}
Sonuç;

Anonymous Method
public static void Main(string[] args)
{
var SonucListe = Enumerable.Range(1, 20).Where(delegate(int number) {
if (number % 2 == 0)
return true;
else
return false;
});
foreach (var Rakam in SonucListe)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();
}

Lambda Sorgusu
public static void Main(string[] args)
{
var SonucListe = Enumerable.Range(1, 20).Where(Rakam => Rakam % 2 == 0);
foreach (var Rakam in SonucListe)
{
Console.WriteLine(Rakam);
}
Console.ReadLine();
}
