Dela via


Kvantifieraråtgärder (Visual Basic)

Kvantifieraråtgärder returnerar ett Boolean värde som anger om vissa eller alla element i en sekvens uppfyller ett villkor.

Följande bild visar två olika kvantifieraråtgärder på två olika källsekvenser. Den första åtgärden frågar om något av elementen är tecknet "A". Den andra åtgärden frågar om alla element är tecknet "A". Båda metoderna returneras true i det här exemplet.

LINQ Quantifier Operations

Standardmetoderna för frågeoperatorer som utför kvantifierare visas i följande avsnitt.

Metoder

Metodnamn beskrivning Syntax för Visual Basic-frågeuttryck Mer information
Alla Avgör om alla element i en sekvens uppfyller ett villkor. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Alla Avgör om några element i en sekvens uppfyller ett villkor. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Innehåller Avgör om en sekvens innehåller ett angivet element. Ej tillämpbart. Enumerable.Contains

Queryable.Contains

Exempel på frågeuttryckssyntax

I de här exemplen Aggregate används -satsen i Visual Basic som en del av filtreringsvillkoret i en LINQ-fråga.

I följande exempel används Aggregate -satsen och All tilläggsmetoden för att returnera från en samling personer vars husdjur alla är äldre än en angiven ålder.

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

I nästa exempel används Aggregate -satsen och Any tilläggsmetoden för att returnera från en samling de personer som har minst ett husdjur som är äldre än en angiven ålder.

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

Se även