where tümcesi (C# Başvurusu)

whereYan 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 öğesine (Aralık değişkeni tarafından başvurulan) bir Boolean koşulu (koşul) uygular ve belirtilen koşulun doğru olduğu öğeleri döndürür. Tek bir sorgu ifadesinde birden çok where yan tümce bulunabilir ve tek bir yan tümce birden çok koşul alt ifadesi içerebilir.

Örnek 1

Aşağıdaki örnekte where yan tümce, beş ' dan az olanlar hariç tüm sayıları filtreler. whereYan tümcesini kaldırırsanız, veri kaynağındaki tüm sayılar döndürülür. İfade, num < 5 her bir öğeye uygulanan belirtedir.

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 bir where yan tümce içinde, && ve || işleçlerini kullanarak gereken sayıda koşulu belirtebilirsiniz. Aşağıdaki örnekte sorgu, yalnızca beş ' dan küçük olan 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

Bir where yan tümce, Boolean değer döndüren bir veya daha fazla yöntem içerebilir. Aşağıdaki örnekte where yan tümce, Aralık değişkeninin geçerli değerinin çift mi yoksa tek mi olduğunu anlamak 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)
    {
        return i % 2 == 0;
    }
}
//Output: 4 8 6 2 0

Açıklamalar

whereYan tümce bir filtreleme mekanizmasıdır. Bir sorgu ifadesinde neredeyse her yerde konumlandırılmış olabilir, ancak ilk veya son yan tümce olamaz. Bir where yan tümce, kaynak öğeleri gruplandırılmadan önce veya sonra filtrelemeniz gerekip gerekmediğini bağlı olarak, bir Grup yan tümcesinden önce veya sonra görünebilir.

Belirtilen koşul veri kaynağındaki öğeler için geçerli değilse, bir derleme zamanı hatası ortaya kalır. Bu, LINQ tarafından sunulan güçlü tür denetiminin bir avantajıdır.

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

Ayrıca bkz.