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
Wyrażenia kwerend LINQ (Przewodnik programowania w języku C#)