Clausola Where (Visual Basic)

Specifica la condizione di filtro per una query.

Sintassi

Where condition  

Parti

condition
Obbligatorio. Espressione che determina se i valori per l'elemento corrente nella raccolta vengono inclusi nella raccolta di output. L'espressione deve restituire un valore Boolean o l'equivalente di un valore Boolean. Se la condizione restituisce True, l'elemento viene incluso nel risultato della query; in caso contrario, l'elemento viene escluso dal risultato della query.

Osservazioni:

La clausola Where consente di filtrare i dati delle query selezionando solo gli elementi che soddisfano determinati criteri. Gli elementi i cui valori causano la valutazione Where della clausola True vengono inclusi nel risultato della query. Gli altri elementi vengono esclusi. L'espressione utilizzata in una clausola Where deve restituire un oggetto Boolean o l'equivalente di un oggetto Boolean, ad esempio un valore Integer che restituisce False quando il relativo valore è zero. È possibile combinare più espressioni in una clausola Where usando operatori logici come And, Or, AndAlso, OrElse, Is e IsNot.

Per impostazione predefinita, le espressioni di query non vengono valutate fino a quando non si accede, ad esempio quando sono associate a dati o iterate in un ciclo For. Di conseguenza, la clausola Where non viene valutata fino a quando non si accede alla query. Se si dispone di valori esterni alla query usati nella clausola Where, assicurarsi che il valore appropriato venga usato nella clausola Where al momento dell'esecuzione della query. Per altre informazioni sull'esecuzione di query, vedere Scrittura della prima query LINQ.

È possibile chiamare funzioni all'interno di una clausola Where per eseguire un calcolo o un'operazione su un valore dell'elemento corrente nella raccolta. La chiamata di una funzione in una clausola Where può causare l'esecuzione immediata della query quando viene definita anziché quando vi si accede. Per altre informazioni sull'esecuzione di query, vedere Scrittura della prima query LINQ.

Esempio 1

Nell'espressione di query seguente viene utilizzata una clausola From per dichiarare una variabile di intervallo cust per ogni oggetto Customer dell'insieme customers. La clausola Where usa la variabile di intervallo per limitare l'output ai clienti dall'area specificata. Il ciclo For Each visualizza il nome della società per ogni cliente nel risultato della query.

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

Esempio 2

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

Vedi anche