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 IsIsNot.

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 AndOr.

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

Zie ook