where tümcesi (C# Başvurusu)

yan where tümcesi, sorgu ifadesinde veri kaynağından hangi öğelerin döndürüleceğini belirtmek için bir sorgu ifadesinde kullanılır. Her kaynak öğeye bir Boole koşulu (koşul) uygular (aralık değişkeni tarafından başvurulur) ve belirtilen koşulun true olduğu durumları döndürür. Tek bir sorgu ifadesi birden çok where yan tümce içerebilir ve tek bir yan tümce birden çok koşul alt ifadesi içerebilir.

Örnek 1

Aşağıdaki örnekte yan tümcesi where , beşten küçük olanlar dışında tüm sayıları filtreler. Yan tümcesini where kaldırırsanız, veri kaynağındaki tüm sayılar döndürülür. İfade num < 5 , her öğeye uygulanan koşuldur.

class WhereSample
{
    static void Main()
    {
        // Simple data source. Arrays support IEnumerable<T>.
        int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];

        // Simple query with one predicate in where clause.
        var queryLowNums =
            from num in numbers
            where num < 5
            select num;

        // Execute the query.
        foreach (var s in queryLowNums)
        {
            Console.Write(s.ToString() + " ");
        }
    }
}
//Output: 4 1 3 2 0

Örnek 2

Tek where bir yan tümce içinde, && ve || işleçlerini kullanarak gerektiği kadar koşul belirtebilirsiniz. Aşağıdaki örnekte sorgu, yalnızca beşten küçük çift sayıları seçmek için iki koşul belirtir.

class WhereSample2
{
static void Main()
{
    // Data source.
    int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];

    // Create the query with two predicates in where clause.
    var queryLowNums2 =
        from num in numbers
        where num < 5 && num % 2 == 0
        select num;

    // Execute the query
    foreach (var s in queryLowNums2)
    {
        Console.Write(s.ToString() + " ");
    }
    Console.WriteLine();

    // Create the query with two where clause.
    var queryLowNums3 =
        from num in numbers
        where num < 5
        where num % 2 == 0
        select num;

    // Execute the query
    foreach (var s in queryLowNums3)
    {
        Console.Write(s.ToString() + " ");
    }
}
}
// Output:
// 4 2 0
// 4 2 0

Örnek 3

Yan where tümce, Boole değerleri döndüren bir veya daha fazla yöntem içerebilir. Aşağıdaki örnekte yan tümcesi, where aralık değişkeninin geçerli değerinin çift mi yoksa tek mi olduğunu belirlemek için bir yöntem kullanır.

class WhereSample3
{
    static void Main()
    {
        // Data source
        int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];

        // Create the query with a method call in the where clause.
        // Note: This won't work in LINQ to SQL unless you have a
        // stored procedure that is mapped to a method by this name.
        var queryEvenNums =
            from num in numbers
            where IsEven(num)
            select num;

         // Execute the query.
        foreach (var s in queryEvenNums)
        {
            Console.Write(s.ToString() + " ");
        }
    }

    // Method may be instance method or static method.
    static bool IsEven(int i) => i % 2 == 0;
}
//Output: 4 8 6 2 0

Açıklamalar

where yan tümcesi bir filtreleme mekanizmasıdır. Sorgu ifadesinde neredeyse her yere konumlandırılabilir, ancak ilk veya son yan tümcesi olamaz. Kaynak where öğeleri gruplandırılmadan önce veya sonra filtrelemeniz gerekip gerekmediğine bağlı olarak, bir yan tümce grup yan tümcesinin önünde veya sonrasında görüntülenebilir.

Belirtilen koşul veri kaynağındaki öğeler için geçerli değilse derleme zamanı hatası oluşur. Bu, LINQ tarafından sağlanan güçlü tür denetiminin avantajlarından biridir.

Derleme zamanında where anahtar sözcük, Standart Sorgu İşleci yöntemine yapılan bir çağrıya Where dönüştürülür.

Ayrıca bkz.