Listede Filtreleme Yapmanın İyi - Kötü - Çirkin Yolu

Bütün gün, dizilerde filtrelemeler yaptıktan sonra, bu konu ile ilgili bir yazı yazmaya karar verdim. Elimizde bir List<int> olsun, dizideki 0‘dan büyük rakamları döndüren fonksiyon yazmak istediğimizi varsayalım;

Önce Kötü Yol;

private static List<int> FiltrelemeninKotuYolu(List<int> t) { List<int> arrReturn = new List<int>(); foreach (int i in t) { if (i > 0) { arrReturn.Add(i); } } return arrReturn; }</pre> Umarım artık böyle kodlar yazmıyorsunuzdur!!..

Çirkin Yol;

Önce bir Predicate Function tanımlarız;

private static bool Karsilastir(int i)
{
    if (i > 0)
    {
        return true;
    }
    return false;
}

Sonra, Predicate Function‘ı kullanırız;

private static List<int> FiltrelemeninCirkinYolu(List<int> t)
{
    Predicate<int> pred = new Predicate<int>(Karsilastir);
    return t.FindAll(pred);
}

Kötü Yol‘dan daha doğru olduğu ortada, ama Güzel bir yol değil.

Son olarak İyi Yol;

private static List<int> FiltrelemeninIyiYolu(List<int> t)
{
    return t.FindAll(n => n > 0);
}

**İyi Yol** aslında sadece **Çirkin Yol**'un iyileştirilmiş hali. *Predicate Method* kullanacağımıza *Lambda Expression* kullanıyoruz. *n => n > 0* : **n**'nin **0**'dan büyük olduğu durumlar anlamına geliyor.

İ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ı