Udostępnij za pośrednictwem


Klauzula where (odwołanie w C#)

where Klauzuli jest używany w wyrażeniu kwerendy, aby określić, które elementy ze źródła danych będą zwracane w wyrażeniu kwerendy.Odnosi się logiczną warunku (predykatu) do każdego elementu źródła (wskazywany przez zmienną zakres) i zwraca te, dla których określony warunek jest spełniony.Wyrażenie jednej kwerendy mogą zawierać wiele where klauzul i jedną klauzulę może zawierać wiele browserCaps predykatu.

Przykład

W poniższym przykładzie where klauzuli odfiltrowuje wszystkie numery z wyjątkiem tych, które są mniej niż pięć.Jeśli usuniesz where klauzuli, wszystkie numery ze źródła danych zostałaby zwrócona.Wyrażenie num < 5 jest predykatu, która jest stosowana do każdego elementu.

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

W ramach pojedynczego where klauzuli, jak wiele predykaty w razie potrzeby można określić przy użyciu & & i | podmiotów gospodarczych.W poniższym przykładzie kwerendy określa dwa predykaty w celu wybrania wyłącznie liczby parzyste, które są mniej niż pięć.

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

A where klauzula może zawierać jedną lub kilka metod, które zwracają wartości logicznych.W poniższym przykładzie where klauzuli używa metody w celu ustalenia, czy bieżącą wartość zmiennej zakres jest parzysta lub nieparzysta.

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

Uwagi

where Klauzuli jest mechanizm filtrowania.To może być umieszczony niemal w dowolnym miejscu w wyrażeniu kwerendy, z wyjątkiem pierwszego lub ostatniego klauzuli nie może być.A where klauzula może pojawić się przed lub po grupy klauzuli w zależności od tego, czy masz do filtrowania elementów źródłowych przed lub po są zgrupowane.

Jeśli określony predykat nie jest prawidłowy dla elementów w źródle danych, spowoduje błąd kompilacji.Jest korzyścią silne typ sprawdzania dostarczonych przez LINQ.

W czasie kompilacji where słowo kluczowe jest konwertowany na wywołanie do Where Operator kwerendy standardowe metody.

Zobacz też

Informacje

Klauzula From (odwołanie w C#)

select — Klauzula (odwołanie w C#)

Koncepcje

Filtrowanie danych

Wyrażenia kwerend LINQ (Przewodnik programowania w języku C#)

Inne zasoby

Słowa kluczowe zapytania (odwołanie w C#)

Wprowadzenie do korzystania z LINQ w C#