Bu yazıda elimizdeki listenin her x’inci elemanını çeken extension method yazacağız.
Örneğin, bir ankete cevap veren katılımcılardan her 5000’inci katılımcıyı seçmek istediğimiz durumlarda böyle bir method’a ihtiyaç duyarız.
TakeEvery() extension method‘u, Language Integrated Query (LINQ) method’larından Skip() ve Take() gibi çalışacak, fakat listenin belli sayıda öğesini atlayıp, belli sayıda öğesini seçmek yerine, her x’inci elemanı seçecek.
İlk olarak TakeEverySample isimli projeyi oluşturalım;
IEnumerable<T> sınıfına TakeEvery() method’unu eklemek için projemize ExtensionMethods isimli sınıfı ekleyelim;
İlk olarak method’a geçilen parametrelerin değerlerini kontrol ediyoruz, eğer uygun olmayan bir değer verilmişse ilgili mesaj ile bir hata fırlatıyoruz.
list parametresinin enumerator‘unu GetEnumerator() method’u ile aldıktan sonra MoveNext() method’u ile liste üzerinde ilerliyoruz.
step değişkeni every değişkeninin değerine eşit olduğunda aradığımız kaydı bulmuşuzdur, ilgili kaydı geri döndürüyoruz.
Örnek kullanım;
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484