cláusula WHERE (Translation from VPE for Csharp Reference)
The where cláusula é usada em uma expressão de consulta para especificar quais elementos da fonte de dados serão retornados na expressão de consulta. Ele se aplica a uma condição booleana (predicado) a cada elemento de fonte (referenciado pela variável de intervalo) e retorna aqueles para o qual a condição especificada for verdadeira.Uma expressão de consulta simples pode conter vários where cláusulas e uma única cláusula podem conter vários subexpressions predicados.
Exemplo
No exemplo a seguir, a where cláusula filtrar todos os números, exceto os que são menores que cinco. Se você remover o where cláusula, todos os números da fonte de dados seriam retornados. A expressão num < 5 é o predicado é aplicado a cada elemento.
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
Dentro de um único where cláusula, você pode especificar quantos predicados conforme necessário usando o && and || operadores.O exemplo a seguir, a consulta especifica dois predicados para selecionar somente os números pares são os menos de cinco.
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() + " ");
}
}
}
// Output: 4 2 0
A where cláusula pode conter um ou mais métodos que retornam valores booliano. No exemplo a seguir, a where cláusula usa um método para determinar se o valor corrente da variável de intervalo é par ou ímpar.
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
Comentários
The where cláusula é um mecanismo de filtragem. Ele pode ser posicionado praticamente em qualquer lugar em uma expressão de consulta, exceto não pode ser a cláusula primeira ou última.A where cláusula pode aparecer antes ou depois de um agrupar cláusula dependendo se você precisa filtrar os elementos de fonte, antes ou depois que eles serão agrupados.
Se um predicado especificado inválido para os elementos em uma fonte de dados, isso resultará em um erro em time de compilar.Isso é uma vantagem da forte tipo-verificação fornecido por LINQ.
A compilar momento o where palavra-chave é convertida em uma telefonar para o Where Método do operador de consulta padrão.
Consulte também
Conceitos
Expressões de consulta do LINQ (guia de programação translation from VPE for Csharp)
Referência
(referência translation from VPE for Csharp) da cláusula FROM
selecionar cláusula (translation from VPE for Csharp Reference)
Outros recursos
Palavras-chave de consulta (translation from VPE for Csharp Reference)