ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

Collections ( Kolleksiyonlar ) Arama Yapmak

Mahmut TEMUR
C#.NET
17.08.2011 19:38:16
Hit : 2978

Merhaba arkadaşlar;

Buradaki yazımda Collections (Kolleksiyonlar)'a bir giriş yapmıştık ve serimize devam edeceğimizi belirtmiştim. Bu aşamada kolleksiyonlara ilişkin serimize Collections (Kolleksiyonlar) da arama yapmaya ilişkin paylaşımla devam edelim istiyorum.

Kolleksiyonlarda arama yapmak için .NET Framework IndexOf ( ), LastIndexOf ( ), FindIndex ( ), FindLastIndex ( ), Find ( ), FindLast ( ) gibi  birçok farklı yöntemi bize sunmaktadır ve bu aramalar sonucunda aradığımız öğenin index numarasını veya index değerinde bulunan elemanın kendisini elde edebiliriz. List<T> class'ı Exists ( ) metodu ile sadece bir öğenin kolleksiyonda olup olmadığını kontrol edebiliriz.

Kolleksiyonlar ile az dahi olsa ilgilendiyseniz OndexOf ( ) metodunu mutlaka duymuşsunuzdur. Eğer IndexOf ( ) metodunu arama yapmak için kullanıyorsanız bu metot elemanları karşılaştırmak için IEquatabable interface'ini kullanır;  parametre olarak bir nesne ister ve eğer eleman kolleksiyonda bulunursa elemanın index numarasını geriye döndürür. Eğer aranan eleman kolleksiyonda bulunmazsa -1 değerini geri döndürür.
IndexOf ( ) metodu ile 3 farklı şekilde arama yapma şansına sahibimiz. IndexOf ( ) metodu sayesinde tüm kolleksiyonun aranması yerine başlangıç index ini ve ne kadarlık bir eleman sayısında arama yapılacağını belirterekte arama yapabiliriz.

IndexOf ( ) metodu yanısıra; Predicate tipli parametre isteyen FindIndex ( ) metodu ile de özel karakteristiklere sahip elemanları arayabiliriz. Predicate<T> tipi parametre olarak T tipi isteyen  Boolean değeri döndüren bir delegasyondur. Ture ve False değerler döndürür. Eğer True dönderse eleman vardır demektir ve eleman bulunur. Dönen değer false ise eleman bulunamaz ve arama işlemi devam eder.

Örneğin bir önceki makalede de kullandığımız Kitap kolleksiyonunu düşünelim. T tipi için Kitap nesnelerini kullanan List<T> class'ı ile bool döndüren ve Kitap tipli bir parametre tanımlayan bir metodun adresini FindIndex ( ) metoduna aktarabiliriz. Bir yazarın bir kitabını bulmak için YazarBul class'ını aşağıdaki gibi tanımlayabiliriz. Find ( ) metodu Predicate<T> dlegasyonu tarafından tanımlanan dönüş tipine sahiptir. Find ( ) metodu class'ın constructor'ıyla aktarabileceğimiz Yazarı aramak için yazar değişkenini kullanırız.

FindIndex () metodu ile YazarBul ( ) class'ının yeni bir instance'ını oluşturarak constructor'a bir yazar string'ini aktarabilir ve Find metodunun adresini aktarabiliriz.



Bir handler metodu ile bir class oluşturmak yerine bir anonim metot da oluşturabiliriz.




FindIndex ( ) metodu bulunan elemanın index numarasını döndürmekte. Tabi burada elemanın index numarasını elde etmek yerine direkt elemana da ulaşabiliriz. Find ( ) metodu FindIndex ( ) metodu gibi Predicate<T> tipli bir parametre gerektirir.



Evet sanırım bu makale için de bu kadar yeterli :)

Kolleksiyonlar ile ilgili anlatımlara diğer makalelerde devam ediyor olacağım.

Faydalı olması dileğiyle kalın sağlıcakla....

Mahmut TEMUR

http://www.mahmuttemur.com
e-posta : mahmuttemur@windowslive.com




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR