September, 2012 | Engin Polat'ın Windows, Web, Mobile ve Game içerikli programcılık sitesi

Arşiv

2012 September ayı için arşiv

LINQ ipucu – 1

15 September 2012 Yorum yapılmamış

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

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.