Clausola Where (Visual Basic)Where Clause (Visual Basic)

Specifica la condizione di filtro per una query.Specifies the filtering condition for a query.

SintassiSyntax

Where condition  

PartiParts

condition
Obbligatorio.Required. Espressione che determina se i valori per l'elemento corrente nella raccolta sono inclusi nella raccolta di output.An expression that determines whether the values for the current item in the collection are included in the output collection. L'espressione deve restituire un valore Boolean o l'equivalente di un valore Boolean.The expression must evaluate to a Boolean value or the equivalent of a Boolean value. Se la condizione restituisce True, l'elemento viene incluso nel risultato della query. in caso contrario, l'elemento viene escluso dal risultato della query.If the condition evaluates to True, the element is included in the query result; otherwise, the element is excluded from the query result.

NoteRemarks

La clausola Where consente di filtrare i dati della query selezionando solo gli elementi che soddisfano determinati criteri.The Where clause enables you to filter query data by selecting only elements that meet certain criteria. Gli elementi i cui valori determinano che la clausola Where restituisca True sono inclusi nel risultato della query. gli altri elementi sono esclusi.Elements whose values cause the Where clause to evaluate to True are included in the query result; other elements are excluded. L'espressione utilizzata in una clausola Where deve restituire una Boolean o l'equivalente di un Boolean, ad esempio un numero intero che restituisce False quando il valore è zero.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. È possibile combinare più espressioni in una clausola Where usando operatori logici come And, Or, AndAlso, OrElse, Is e IsNot.You can combine multiple expressions in a Where clause by using logical operators such as And, Or, AndAlso, OrElse, Is, and IsNot.

Per impostazione predefinita, le espressioni di query non vengono valutate fino a quando non vengono accessibili, ad esempio quando sono associate a dati o iterate in un ciclo 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. Di conseguenza, la clausola Where non viene valutata fino a quando non viene eseguito l'accesso alla query.As a result, the Where clause is not evaluated until the query is accessed. Se si dispone di valori esterni alla query utilizzati nella clausola Where, verificare che nel momento in cui viene eseguita la query venga utilizzato il valore appropriato nella clausola Where.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. Per ulteriori informazioni sull'esecuzione di query, vedere scrittura della prima query LINQ.For more information about query execution, see Writing Your First LINQ Query.

È possibile chiamare funzioni all'interno di una clausola Where per eseguire un calcolo o un'operazione su un valore dell'elemento corrente nella raccolta.You can call functions within a Where clause to perform a calculation or operation on a value from the current element in the collection. La chiamata di una funzione in una clausola Where può causare l'esecuzione immediata della query quando viene definita al posto di quando viene eseguito l'accesso.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. Per ulteriori informazioni sull'esecuzione di query, vedere scrittura della prima query LINQ.For more information about query execution, see Writing Your First LINQ Query.

EsempioExample

Nell'espressione di query seguente viene utilizzata una clausola From per dichiarare una variabile di intervallo cust per ogni oggetto Customer nella raccolta customers.The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. La clausola Where usa la variabile di intervallo per limitare l'output ai clienti dall'area specificata.The Where clause uses the range variable to restrict the output to customers from the specified region. Il ciclo For Each Visualizza il nome della società per ogni cliente nel risultato della query.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

EsempioExample

Nell'esempio seguente vengono utilizzati gli operatori logici And e Or nella clausola 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

Vedere ancheSee also