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