Where (Cláusula, Visual Basic)Where Clause (Visual Basic)

Especifica la condición de filtrado para una consulta.Specifies the filtering condition for a query.

SintaxisSyntax

Where condition  

ElementosParts

condition
Obligatorio.Required. Una expresión que determina si los valores del elemento actual de la colección se incluyen en la colección de salida.An expression that determines whether the values for the current item in the collection are included in the output collection. La expresión debe evaluarse como un valor Boolean o el equivalente de un valor Boolean.The expression must evaluate to a Boolean value or the equivalent of a Boolean value. Si la condición se evalúa como True, el elemento se incluye en el resultado de la consulta; de lo contrario, el elemento se excluye del resultado de la consulta.If the condition evaluates to True, the element is included in the query result; otherwise, the element is excluded from the query result.

ComentariosRemarks

La cláusula Where permite filtrar los datos de la consulta seleccionando solo los elementos que cumplen determinados criterios.The Where clause enables you to filter query data by selecting only elements that meet certain criteria. Los elementos cuyos valores hacen que la cláusula Where se evalúe como True se incluyen en el resultado de la consulta; se excluyen otros elementos.Elements whose values cause the Where clause to evaluate to True are included in the query result; other elements are excluded. La expresión que se utiliza en una cláusula Where debe evaluarse como un Boolean o el equivalente de un Boolean, como un entero que se evalúa como False cuando su valor es cero.The expression that is used in a Where clause must evaluate to a Boolean or the equivalent of a Boolean, such as an Integer that evaluates to False when its value is zero. Puede combinar varias expresiones en una cláusula Where mediante operadores lógicos como And, Or, AndAlso, OrElse, Isy IsNot.You can combine multiple expressions in a Where clause by using logical operators such as And, Or, AndAlso, OrElse, Is, and IsNot.

De forma predeterminada, las expresiones de consulta no se evalúan hasta que se tiene acceso a ellas; por ejemplo, cuando están enlazadas a datos o se recorren en iteración en un bucle For.By default, query expressions are not evaluated until they are accessed—for example, when they are data-bound or iterated through in a For loop. Como resultado, la cláusula Where no se evalúa hasta que se tiene acceso a la consulta.As a result, the Where clause is not evaluated until the query is accessed. Si tiene valores externos a la consulta que se usan 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.If you have values external to the query that are used in the Where clause, ensure that the appropriate value is used in the Where clause at the time the query is executed. Para obtener más información sobre la ejecución de consultas, vea escribir su primera consulta LINQ.For more information about query execution, see Writing Your First LINQ Query.

Puede llamar a funciones dentro de una cláusula Where para realizar un cálculo o una operación en un valor del elemento actual de la colección.You can call functions within a Where clause to perform a calculation or operation on a value from the current element in the collection. Llamar a una función en una cláusula Where puede hacer que la consulta se ejecute inmediatamente cuando se define en lugar de cuando se tiene acceso a ella.Calling a function in a Where clause can cause the query to be executed immediately when it is defined instead of when it is accessed. Para obtener más información sobre la ejecución de consultas, vea escribir su primera consulta LINQ.For more information about query execution, see Writing Your First LINQ Query.

EjemploExample

La siguiente expresión de consulta utiliza una cláusula From para declarar una variable de rango cust para cada Customer objeto de la colección de customers.The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. La cláusula Where usa la variable de rango para restringir la salida a los clientes de la región especificada.The Where clause uses the range variable to restrict the output to customers from the specified region. El bucle For Each muestra el nombre de la compañía para cada cliente en el resultado de la consulta.The For Each loop displays the company name for each customer in the query result.

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

EjemploExample

En el ejemplo siguiente se usa And y Or operadores lógicos en la cláusula Where.The following example uses And and Or logical operators in the Where clause.

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énSee also