Where (Cláusula, Visual Basic)
Especifica una condición de filtrado de una consulta.
Sintaxis
Where condition
Partes
condition
Necesario. Expresión que determina si los valores del elemento actual de la colección se incluyen en la colección de salida. La expresión debe evaluarse como un valor Boolean
o el equivalente de un valor Boolean
. Si la condición se evalúa como True
, el elemento se incluye en el resultado de la consulta; de lo contrario, se excluye.
Comentarios
La cláusula Where
permite filtrar los datos de la consulta seleccionando solo los elementos que cumplen determinados criterios. Los elementos cuyos valores hacen que la cláusula Where
se evalúe como True
se incluyen en el resultado de la consulta; los restantes elementos se excluyen. La expresión que se usa en una cláusula Where
debe evaluarse como Boolean
o el equivalente de Boolean
, como un entero que se evalúa como False
cuando su valor es cero. Para combinar varias expresiones en una cláusula Where
, se usan operadores lógicos como And
, Or
, AndAlso
, OrElse
, Is
y IsNot
.
De forma predeterminada, las expresiones de consulta no se evalúan hasta que se accede a ellas (por ejemplo, cuando están enlazadas a datos o se recorren en un bucle For
). En consecuencia, la cláusula Where
no se evalúa hasta que se accede a la consulta. Si tiene valores externos a la consulta que se usen en la cláusula Where
, asegúrese de que se usa el valor adecuado en la cláusula Where
en el momento en que se ejecuta la consulta. Para más información sobre la ejecución de consultas, vea Escritura de la primera consulta con LINQ.
Puede llamar a funciones dentro de una cláusula Where
para realizar cualquier cálculo u operación en un valor del elemento actual de la colección. Si llama a una función en una cláusula Where
, puede hacer que la consulta se ejecute en cuanto se define, en lugar de cuando se accede a ella. Para más información sobre la ejecución de consultas, vea Escritura de la primera consulta con LINQ.
Ejemplo 1
En la expresión de consulta siguiente, se usa una cláusula From
para declarar una variable de rango cust
para cada objeto Customer
en la colección customers
. La cláusula Where
usa la variable de rango para restringir la salida a los clientes de la región especificada. El bucle For Each
muestra el nombre de la empresa de cada cliente en el resultado de la 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
Ejemplo 2
En el ejemplo siguiente se usan los operadores lógicos And
y Or
en la 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