Linq İle Where İşlemi

SORU: C#’ta bir liste içerisindeki belli özelliklere sahip elemanları nasıl bulabiliriz?

Yukarıdaki problemi temel programlama bakış açısıyla döngü yapılarını kullanarak kolaylıkla bulabiliriz. Bunu basit bir örnek ile açıklayalım:

  • Elimizde bir liste dolusu Araba nesneleri olduğunu düşünelim. Bu araba nesnesinin belli özellikleri olsun:
  • Listemiz içerisindeki maksimum hızı 300 den fazla olan arabaları bulmak istiyorum. Bu problemin çözümü için döngü yapılarını kullandığımız aşağıdaki kod parçaları işimizi görecektir:
for loop

foreach
  • Yukarıdaki işlemi yapmak için yeni bir boş liste tanımlamalıyız ki şartlarımızı sağlayan arabaları bu listeye ekleyelim. Görüldüğü gibi döngü yapıları ile bir kaç satır kod yazmamız gerekiyor.
  • Şimdi aynı işlemi LINQ kullanarak yapalım. 
  • Yukarıdaki döngüler ile yaptığımız işlemi çok daha kısa ve efektif bir şekilde tek satır kod kullanarak gerçekleştirmiş olduk. 

Peki hız konusunda yukarıdaki kod parçalarının bir farkı bulunuyor mu? Hangi yöntem daha hızlı çalışıyor? Bunun da cevabı için buraya tıklayarak test çalışmamızı inceleyebilirsiniz:

Son olarak Where fonksiyonundan biraz bahsedelim. Öncelikle LINQ metodlarını kullanabilmek için projeye LINQ’yu dahil etmeliyiz. (using System.Linq;)

Where fonksiyonu içerisinde aynı if yapılarındaki gibi geri dönüş tipi bool olan bir işlem gerçekleştirmeliyiz. Sonuç olarak şartımızı sağlayan elemanlardan oluşan bir Collection dönecek. Bunu da .ToList( ) ve ya ToArray( ) metodları ile kendi listelerimize ya da dizilerimize dönüştürerek atama işlemini gerçekleştirebiliriz.

Leave a Reply

Your email address will not be published. Required fields are marked *