LINQ ipucu - 1

Aldığı int parametre üzerinde çeşitli işlemler yapan ve elde ettiği sonucu geriye döndüren Hesapla() isminde bir method‘umuz var;

public int Hesapla(int Rakam) { ///parametre üzerinde gerçekleştirilen işlemler return Rakam; }</pre>

Hesapla() method’unu çağıran aşağıdaki YapilacakIsler1() method‘u olsun;

public IEnumerable<int> YapilacakIsler1(IEnumerable<int> Rakamlar)
{
    var Sonuc = new List<int>();

    foreach (var r in Rakamlar)
    {
        Sonuc.Add(Hesapla(r));
    }

    return Sonuc;
}

YapilacakIsler1() method’unu, yield anahtar kelimesini kullanarak, IEnumerable<T> tipinde değişken oluşturmaya gerek kalmayacak şekilde değiştirebiliriz;

public IEnumerable<int> YapilacakIsler2(IEnumerable<int> Rakamlar)
{
    foreach (var r in Rakamlar)
    {
        yield return Hesapla(r);
    }
}

Hatta, LINQ Expression yazarak IEnumerable<T> tipindeki listedenin tüm elemanlarını Hesapla() method’una parametre olarak gönderebiliriz;

public IEnumerable<int> YapilacakIsler3(IEnumerable<int> Rakamlar)
{
    return Rakamlar.Select(r => Hesapla(r));
}

Son olarak, LINQ Select method’una Lambda Expression yerine, Hesapla() method’unu parametre olarak verebiliriz;

public IEnumerable<int> YapilacakIsler4(IEnumerable<int> Rakamlar)
{
    return Rakamlar.Select(Hesapla);
}


Yukarıdaki sadeleştirme *devrimsel* bir yenilik olmasa da, kodun daha *derli-toplu* olmasını sağlayacaktır.

İlgili diğer makaleler

blog comments powered by Disqus

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı