Udostępnij za pośrednictwem


Operacje kwantyfikatora (Visual Basic)

Operacje kwantyfikatora zwracają wartość wskazującą Boolean , czy niektóre lub wszystkie elementy w sekwencji spełniają warunek.

Poniższa ilustracja przedstawia dwie różne operacje kwantyfikatora na dwóch różnych sekwencjach źródłowych. Pierwsza operacja pyta, czy którykolwiek z elementów jest znakiem "A". Druga operacja pyta, czy wszystkie elementy są znakiem "A". Obie metody zwracają true w tym przykładzie.

LINQ Quantifier Operations

Standardowe metody operatorów zapytań, które wykonują operacje kwantyfikatora, są wymienione w poniższej sekcji.

Metody

Nazwa metody opis Składnia wyrażeń zapytań języka Visual Basic Więcej informacji
wszystkie Określa, czy wszystkie elementy w sekwencji spełniają warunek. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Dowolne Określa, czy dowolne elementy w sekwencji spełniają warunek. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contains Określa, czy sekwencja zawiera określony element. Nie dotyczy. Enumerable.Contains

Queryable.Contains

Przykłady składni wyrażeń zapytania

Te przykłady używają klauzuli Aggregate w Visual Basic w ramach warunku filtrowania w zapytaniu LINQ.

W poniższym przykładzie użyto klauzuli Aggregate i All metody rozszerzenia, aby wrócić z kolekcji tych osób, których zwierzęta domowe są starsze niż określony wiek.

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

W następnym przykładzie użyto klauzuli Aggregate i Any metody rozszerzenia, aby wrócić z kolekcji tych osób, które mają co najmniej jedno zwierzę, które jest starsze niż określony wiek.

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

Zobacz też