Archive for Mart 27, 2011
Linq ile bir diziye satır numarası atama
.Net framework 3 ve sonrası ile hayatımıza giren Linq sorguları oldukça fayda sağlamakta. Benim için satıriçi yazılan metodları -delegate, Action, lambda func vb- anlamak çok kolay olmasa da biraz kafa yorunca neler çıktığına şaşırmamak elde değil.
Bir iş üzerinde uğraşırken basit bir dizi üzerinde aradığım elemanın satır sayısını ya da dizi indexini elde etmem gerekti. eski usül bunu herhalde şöyle yapardım:
int bulunanIndex =-1;
for(int i=0;i<dizi.Lenght;i++)
if(dizi[i]==aranan)
bulunanIndex=i;
Bu çözüm gayet güzel ve basittir ama yanlızca o indexi bulmanıza yarar, daha fazlası değil.
Aşağıdaki linq metodu ile diziden indexlenmiş bir dizi elde etmiş oluruz.
for(int i=0;i{Eleman=eleman,Index=id});
Burda eleman dizinin bir elemanı, id ise Select metodu içinde dahili olarak kullanılan döngünün indexeri. Biz burdan Eleman ve Index propertylerine sahip bir sınıf elde ediyoruz. Ve daha sonra bu sınıfı indexi üzerinde sorgu yapabileceğimiz bir Linq sorgusunda rahat rahat kullanabiliyoruz.
var sonuc = from x in indexlenmisDizi
where x.Eleman.Contains(” “) && Index>23
select x;
Kolaylıklar, güzellikler…