Where-component (Visual Basic)
Hiermee geeft u de filtervoorwaarde voor een query.
Syntaxis
Where condition
generator
condition
Vereist. Een expressie die bepaalt of de waarden voor het huidige item in de verzameling zijn opgenomen in de uitvoerverzameling. De expressie moet een Boolean
waarde of een equivalent van een Boolean
waarde evalueren. Als de voorwaarde wordt geëvalueerd True
, wordt het element opgenomen in het queryresultaat; anders wordt het element uitgesloten van het queryresultaat.
Opmerkingen
Met de Where
component kunt u querygegevens filteren door alleen elementen te selecteren die voldoen aan bepaalde criteria. Elementen waarvan de waarden ertoe leiden dat de Where
component wordt True
geëvalueerd, worden opgenomen in het queryresultaat; andere elementen worden uitgesloten. De expressie die in een Where
component wordt gebruikt, moet een Boolean
of een equivalent van een Boolean
, zoals een geheel getal dat evalueert False
wanneer de waarde nul is, evalueren. U kunt meerdere expressies in een Where
component combineren met behulp van logische operators zoals And
, Or
, AndAlso
, OrElse
, en Is
IsNot
.
Query-expressies worden standaard pas geëvalueerd wanneer ze worden geopend, bijvoorbeeld wanneer ze gegevens zijn gebonden of doorlopen in een For
lus. Als gevolg hiervan wordt de Where
component pas geëvalueerd als de query wordt geopend. Als u waarden buiten de query hebt die in de Where
component worden gebruikt, moet u ervoor zorgen dat de juiste waarde wordt gebruikt in de Where
component op het moment dat de query wordt uitgevoerd. Zie Uw eerste LINQ-query schrijven voor meer informatie over het uitvoeren van query's.
U kunt functies binnen een Where
component aanroepen om een berekening of bewerking uit te voeren op een waarde uit het huidige element in de verzameling. Het aanroepen van een functie in een Where
component kan ertoe leiden dat de query onmiddellijk wordt uitgevoerd wanneer deze wordt gedefinieerd in plaats van wanneer deze wordt geopend. Zie Uw eerste LINQ-query schrijven voor meer informatie over het uitvoeren van query's.
Voorbeeld 1
In de volgende query-expressie wordt een From
component gebruikt om een bereikvariabele cust
te declareren voor elk Customer
object in de customers
verzameling. De Where
component maakt gebruik van de bereikvariabele om de uitvoer te beperken tot klanten uit de opgegeven regio. De For Each
lus geeft de bedrijfsnaam weer voor elke klant in het queryresultaat.
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
Voorbeeld 2
In het volgende voorbeeld worden logische operators in de Where
component gebruikt And
Or
.
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