where tümcesi (C# Başvurusu)where clause (C# Reference)

where Yan tümcesi, sorgu ifadesinde veri kaynağından hangi öğelerin döndürüleceğini belirtmek için bir sorgu ifadesinde kullanılır.The where clause is used in a query expression to specify which elements from the data source will be returned in the query expression. 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.It applies a Boolean condition (predicate) to each source element (referenced by the range variable) and returns those for which the specified condition is true. 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.A single query expression may contain multiple where clauses and a single clause may contain multiple predicate subexpressions.

ÖrnekExample

Aşağıdaki örnekte where yan tümce, beş ' dan az olanlar hariç tüm sayıları filtreler.In the following example, the where clause filters out all numbers except those that are less than five. where Yan tümcesini kaldırırsanız, veri kaynağındaki tüm sayılar döndürülür.If you remove the where clause, all numbers from the data source would be returned. İfade num < 5 , her bir öğeye uygulanan belirtedir.The expression num < 5 is the predicate that is applied to each element.

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

ÖrnekExample

Tek where bir yan tümce içinde, && ve | işleçlerini kullanarak gereken sayıda koşulu belirtebilirsiniz.Within a single where clause, you can specify as many predicates as necessary by using the && and || operators. Aşağıdaki örnekte sorgu, yalnızca beş ' dan küçük olan sayıları seçmek için iki koşul belirtir.In the following example, the query specifies two predicates in order to select only the even numbers that are less than five.

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

ÖrnekExample

Bir where yan tümce, Boolean değer döndüren bir veya daha fazla yöntem içerebilir.A where clause may contain one or more methods that return Boolean values. 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.In the following example, the where clause uses a method to determine whether the current value of the range variable is even or odd.

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çıklamalarRemarks

where Yan tümce bir filtreleme mekanizmasıdır.The where clause is a filtering mechanism. Bir sorgu ifadesinde neredeyse her yerde konumlandırılmış olabilir, ancak ilk veya son yan tümce olamaz.It can be positioned almost anywhere in a query expression, except it cannot be the first or last clause. 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.A where clause may appear either before or after a group clause depending on whether you have to filter the source elements before or after they are grouped.

Belirtilen koşul veri kaynağındaki öğeler için geçerli değilse, bir derleme zamanı hatası ortaya kalır.If a specified predicate is not valid for the elements in the data source, a compile-time error will result. Bu, tarafından LINQLINQsunulan güçlü tür denetiminin bir avantajıdır.This is one benefit of the strong type-checking provided by LINQLINQ.

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.At compile time the where keyword is converted into a call to the Where Standard Query Operator method.

Ayrıca bkz.See also