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);

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);</pre>

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ç;

LINQ Sorgusu - Predicate Function

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();
}

LINQ Sorgusu - Anonymous Method

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();
}



![LINQ Sorgusu - Lambda Expression](/assets/uploads/2011/05/LINQSorgular.png "LINQ Sorgusu - Lambda Expression")

İlgili diğer makaleler

blog comments powered by Disqus

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 452

Creative Commons Lisansı