Cláusula Where (Visual Basic)
Especifica a condição de filtragem de uma consulta.
Sintaxe
Where condition
Partes
condition
Obrigatórios. Uma expressão que determina se os valores do item atual na coleção estão incluídos na coleção de saída. A expressão deve ser avaliada como um valor Boolean
ou o equivalente a um valor Boolean
. Se a condição for avaliada como True
, o elemento será incluído no resultado da consulta; caso contrário, o elemento será excluído dele.
Comentários
A cláusula Where
permite filtrar dados de consulta selecionando apenas elementos que atendam a determinados critérios. Os elementos cujos valores fazem com que a cláusula Where
seja avaliada como True
são incluídos no resultado da consulta; outros elementos são excluídos. A expressão usada em uma cláusula Where
deve ser avaliada como Boolean
ou o equivalente a Boolean
, como um Integer que é avaliado como False
quando o valor é zero. Você pode combinar várias expressões em uma cláusula Where
usando operadores lógicos como And
, Or
, AndAlso
, OrElse
, Is
e IsNot
.
Por padrão, as expressões de consulta não são avaliadas até serem acessadas, por exemplo, quando são vinculadas a dados ou iteradas em um loop For
. Como resultado, a cláusula Where
não é avaliada até que a consulta seja acessada. Se você tiver valores externos à consulta usados na cláusula Where
, certifique-se de que o valor apropriado seja usado na cláusula Where
no momento em que a consulta for executada. Para obter mais informações sobre a execução da consulta, consulte Como gravar sua primeira consulta LINQ.
Você pode chamar funções dentro de uma cláusula Where
para realizar um cálculo ou operação em um valor do elemento atual na coleção. Chamar uma função em uma cláusula Where
pode fazer com que a consulta seja executada imediatamente quando for definida, e não quando for acessada. Para obter mais informações sobre a execução da consulta, consulte Como gravar sua primeira consulta LINQ.
Exemplo 1
A expressão de consulta a seguir usa uma cláusula From
para declarar uma variável de intervalo cust
para cada objeto Customer
na coleção customers
. A cláusula Where
usa a variável de intervalo para restringir a saída aos clientes da região especificada. O loop For Each
exibe o nome da empresa para cada cliente no resultado da consulta.
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub
Exemplo 2
O exemplo a seguir usa os operadores lógicos And
e Or
na cláusula Where
.
Private Sub DisplayElements()
Dim elements As List(Of Element) = BuildList()
' Get a list of elements that have an atomic number from 12 to 14,
' or that have a name that ends in "r".
Dim subset = From theElement In elements
Where (theElement.AtomicNumber >= 12 And theElement.AtomicNumber < 15) _
Or theElement.Name.EndsWith("r")
Order By theElement.Name
For Each theElement In subset
Console.WriteLine(theElement.Name & " " & theElement.AtomicNumber)
Next
' Output:
' Aluminum 13
' Magnesium 12
' Silicon 14
' Sulfur 16
End Sub
Private Function BuildList() As List(Of Element)
Return New List(Of Element) From
{
{New Element With {.Name = "Sodium", .AtomicNumber = 11}},
{New Element With {.Name = "Magnesium", .AtomicNumber = 12}},
{New Element With {.Name = "Aluminum", .AtomicNumber = 13}},
{New Element With {.Name = "Silicon", .AtomicNumber = 14}},
{New Element With {.Name = "Phosphorous", .AtomicNumber = 15}},
{New Element With {.Name = "Sulfur", .AtomicNumber = 16}}
}
End Function
Public Class Element
Public Property Name As String
Public Property AtomicNumber As Integer
End Class