Condividi tramite


Operazioni di quantificatore (Visual Basic)

Le operazioni quantificatori restituiscono un Boolean valore che indica se alcuni o tutti gli elementi di una sequenza soddisfano una condizione.

La figura seguente illustra operazioni di quantificazione diverse su sequenze di origine diverse. La prima operazione chiede se uno degli elementi è il carattere 'A'. La seconda operazione chiede se tutti gli elementi sono il carattere 'A'. Entrambi i metodi restituiscono true in questo esempio.

Operazioni di quantificatore LINQ

I metodi dell'operatore di query standard che eseguono operazioni di quantificatore sono elencati nella sezione seguente.

Metodi

Nome metodo Descrizione Sintassi delle espressioni di query di Visual Basic Altre informazioni
Tutti Determina se tutti gli elementi di una sequenza soddisfano una condizione. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Qualunque Determina se gli elementi di una sequenza soddisfano una condizione. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contiene Determina se una sequenza contiene un elemento specificato. Non applicabile. Enumerable.Contains

Queryable.Contains

Esempi di sintassi delle espressioni di query

Questi esempi usano la Aggregate clausola in Visual Basic come parte della condizione di filtro in una query LINQ.

Nell'esempio seguente viene utilizzata la Aggregate clausola e il All metodo di estensione per restituire da una raccolta le persone i cui animali domestici sono tutti più vecchi di un'età specificata.

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

Nell'esempio seguente viene usata la Aggregate clausola e il Any metodo di estensione per restituire da una raccolta le persone che hanno almeno un animale domestico più vecchio di un'età specificata.

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

Vedere anche