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 IndexOf ( ) » LastIndexOf ( ) » FindIndex ( ) » FindLastIndex ( ) » Find ( )