Where
Where ile koşula uyan elemanları filtrelemeyi öğrenirsin.
Where ile süzme
Where metodu, bir koleksiyonu bir koşula göre süzer. Koşul, her eleman için bool döndüren bir lambda ifadesidir. true döndüren elemanlar sonuçta kalır, false döndürenler elenir.
Örnek: words.Where(w => w.Length > 4) dört harften uzun sözcükleri tutar. Lambda parametresi (w) koleksiyonun bir elemanını temsil eder. Sonuç yine bir IEnumerable<string>'dir; ister foreach ile gezer, ister .ToList() ile liste yaparsın.
Lambda ifadesi anatomisi
Bir lambda, parametre => ifade biçimindedir. => okunun soluna parametre adı, sağına ise dönüş değeri yazılır. n => n > 5 lambdası n alır, n > 5 mantıksal değerini döndürür.
İki parametreli lambda da yazabilirsin: (a, b) => a + b. Parantez, birden çok parametre varsa zorunludur. Lambda içinde dış değişkenleri de kullanabilirsin; bu, LINQ ile filtre koşulunu dışarıdan verme esnekliği sağlar.
Uygulama Çift sayıları süz
numbers dizisinde çift sayıları Where ile süz ve foreach ile her birini yazdır. Çift sayı: n % 2 == 0.
Örnek çözümü göster
numbers.Where(n => n % 2 == 0) ile çiftleri süz, foreach ile gez, Console.WriteLine(n) ile yazdır.
Örnek çözüm:
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
foreach (var n in numbers.Where(n => n % 2 == 0))
{
Console.WriteLine(n);
}
}
}
Kendini test et
-
Koşulu tamamla
var longWords = words.Where(w => w.____ > 4);Cevabı göster
var longWords = words.Where(w => w.Length > 4); -
Where'nin döndürdüğü tür?
var r = numbers.Where(n => n > 5);- List<int>
- int[]
- IEnumerable<int>
- bool
Cevabı göster
IEnumerable<int> — Doğru. Where, IEnumerable<int> döndürür; yine bir koleksiyondur amaToList/sıralama ertelenmiştir.
-
Lambdayı sonucuna eşle
- n => n > 5
- true (n=8)
- n => n % 2 == 0
- true (n=4)
- n => n < 0
- false (n=3)
- n => n == 10
- true (n=10)