Delen via


Kwantificatorbewerkingen (Visual Basic)

Kwantificatorbewerkingen retourneren een Boolean waarde die aangeeft of sommige of alle elementen in een reeks aan een voorwaarde voldoen.

In de volgende afbeelding ziet u twee verschillende kwantifierbewerkingen op twee verschillende bronreeksen. De eerste bewerking vraagt of een van de elementen het teken A is. Met de tweede bewerking wordt gevraagd of alle elementen het teken A zijn. Beide methoden retourneren true in dit voorbeeld.

LINQ Quantifier Operations

De standaardqueryoperatormethoden die kwantificeerbewerkingen uitvoeren, worden vermeld in de volgende sectie.

Methoden

Methodenaam Beschrijving Syntaxis van Visual Basic-queryexpressie Meer informatie
Alle Bepaalt of alle elementen in een reeks aan een voorwaarde voldoen. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Alle Bepaalt of elementen in een reeks aan een voorwaarde voldoen. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contains Bepaalt of een reeks een opgegeven element bevat. Niet van toepassing. Enumerable.Contains

Queryable.Contains

Voorbeelden van syntaxis van query-expressie

In deze voorbeelden wordt de Aggregate component in Visual Basic gebruikt als onderdeel van de filtervoorwaarde in een LINQ-query.

In het volgende voorbeeld wordt de Aggregate component en de All extensiemethode gebruikt om terug te keren uit een verzameling personen waarvan huisdieren allemaal ouder zijn dan een opgegeven leeftijd.

Class Person
    Public Property Name As String
    Public Property Pets As Pet()
End Class

Class Pet
    Public Property Name As String
    Public Property Age As Integer
End Class

Sub All()
    Dim barley As New Pet With {.Name = "Barley", .Age = 4}
    Dim boots As New Pet With {.Name = "Boots", .Age = 1}
    Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
    Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
    Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

    Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
    Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
    Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

    ' Create the list of Person objects that will be queried.
    Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

    Dim query = From pers In people
                Where (Aggregate pt In pers.Pets Into All(pt.Age > 2))
                Select pers.Name

    Dim sb As New System.Text.StringBuilder()
    For Each name As String In query
        sb.AppendLine(name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Arlene
    ' Rui

End Sub

In het volgende voorbeeld wordt de Aggregate component en de Any extensiemethode gebruikt om terug te keren van een verzameling personen die ten minste één huisdier hebben dat ouder is dan een opgegeven leeftijd.

Class Person
    Public Property Name As String
    Public Property Pets As Pet()
End Class

Class Pet
    Public Property Name As String
    Public Property Age As Integer
End Class

Sub Any()
    Dim barley As New Pet With {.Name = "Barley", .Age = 4}
    Dim boots As New Pet With {.Name = "Boots", .Age = 1}
    Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
    Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
    Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}

    Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
    Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
    Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}

    ' Create the list of Person objects that will be queried.
    Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})

    Dim query = From pers In people
                Where (Aggregate pt In pers.Pets Into Any(pt.Age > 7))
                Select pers.Name

    Dim sb As New System.Text.StringBuilder()
    For Each name As String In query
        sb.AppendLine(name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Rui

End Sub

Zie ook