Compartir a través de


Where (Cláusula, Visual Basic)

Especifica la condición de filtrado de una consulta.

Where condition

Elementos

  • condition
    Obligatorio. Expresión que determina si se incluyen en la colección de salida los valores del elemento actual de la colección. La expresión debe evaluarse como un valor de tipo Boolean o el equivalente de un valor de tipo Boolean. Si la condición se evalúa como True, se incluye el elemento en el resultado de la consulta; de lo contrario, se excluye el elemento del resultado.

Comentarios

La cláusula Where permite filtrar los datos de una consulta seleccionando únicamente 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 demás elementos se excluyen. La expresión que se usa en una cláusula Where debe evaluarse como un valor de tipo Boolean o el equivalente de un valor de tipo Boolean, como un entero que se evalúa como False cuando su valor es cero. Puede combinar varias expresiones en una cláusula Where mediante operadores lógicos, como And, Or, AndAlso, OrElse, Is e IsNot.

De forma predeterminada, no se evalúan las expresiones de consulta hasta que se obtenga acceso a ellas; por ejemplo, cuando se enlazan a datos o se recorren en iteración en un bucle For. Como resultado, no se evalúa la cláusula Where hasta que se obtenga acceso a la consulta. Si se usan valores externos a la consulta en la cláusula Where, asegúrese de que se usa el valor adecuado en la cláusula Where cuando se ejecute la consulta. Para obtener más información sobre la ejecución de consultas, vea Escribir la primera consulta con LINQ (Visual Basic).

Puede llamar a las funciones en una cláusula Where para realizar un cálculo u operación con un valor del elemento actual de la colección. Al llamar a una función en una cláusula Where, es posible que la consulte se ejecute inmediatamente en el momento de su definición y no cuando se obtiene acceso a ella. Para obtener más información sobre la ejecución de consultas, vea Escribir la primera consulta con LINQ (Visual Basic).

Ejemplo

La siguiente expresión de consulta usa una cláusula From para declarar una variable de rango cust para cada objeto Customer de la colección customers. La cláusula Where usa la variable de rango para restringir el resultado a los clientes de la región especificada. El bucle For Each muestra el nombre de la compañía 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

El ejemplo siguiente utiliza And y operadores lógicos de Or en la cláusula de 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

Vea también

Referencia

From (Cláusula, Visual Basic)

Select (Cláusula, Visual Basic)

Instrucción For Each...Next (Visual Basic)

Conceptos

Introducción a LINQ en Visual Basic

Otros recursos

Consultas de Visual Basic