CodeBlanks Logo Icon CodeBlanks

Where

C# kursu · Orta seviye · Ders 89/116

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

  1. Koşulu tamamla

    var longWords = words.Where(w => w.____ > 4);
    Cevabı göster
    var longWords = words.Where(w => w.Length > 4);
  2. 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.

  3. 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)

Orta seviye bölümündeki tüm dersler