Condividi tramite


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 Boolean valore o l'equivalente di un Boolean valore. 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 Where clausola consente di filtrare i dati delle query selezionando solo gli elementi che soddisfano determinati criteri. Gli elementi i cui valori causano la valutazione True della Where clausola vengono inclusi nel risultato della query. Gli altri elementi vengono esclusi. L'espressione utilizzata in una Where clausola deve restituire un Boolean oggetto o l'equivalente di un Booleanoggetto , ad esempio un valore Integer che restituisce False quando il relativo valore è zero. È possibile combinare più espressioni in una Where clausola usando operatori logici come And, , OrAndAlsoOrElse, 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 For ciclo. Di conseguenza, la Where clausola non viene valutata fino a quando non si accede alla query. Se si dispone di valori esterni alla query usata nella Where clausola , assicurarsi che il valore appropriato venga usato nella Where clausola 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 Where clausola per eseguire un calcolo o un'operazione su un valore dell'elemento corrente nella raccolta. La chiamata di una funzione in una Where clausola può causare l'esecuzione immediata della query quando viene definita anziché quando 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 From clausola per dichiarare una variabile cust di intervallo per ogni Customer oggetto dell'insieme customers . La Where clausola usa la variabile di intervallo per limitare l'output ai clienti dall'area specificata. Il For Each ciclo 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 Where clausola .

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 anche