Condividi tramite


Operazioni del quantificatore

Aggiornamento: novembre 2007

Le operazioni del quantificatore restituiscono un valore Boolean che indica se alcuni o tutti gli elementi in una sequenza soddisfano una condizione.

Nella figura seguente vengono illustrate due diverse operazioni del quantificatore in due diverse sequenze di origine. Nella prima operazione viene chiesto se uno o più elementi rappresentano il carattere 'A' e il risultato è true. Nella seconda operazione viene chiesto se tutti gli elementi rappresentano il carattere 'A' e il risultato è true.

Operazioni con quantificatore LINQ

I metodi degli operatori di query standard che eseguono le operazioni del quantificatore sono riportati nella sezione seguente.

Metodi

Nome metodo

Descrizione

Sintassi dell'espressione di query in C#

Sintassi dell'espressione di query in Visual Basic

Ulteriori informazioni

Tutti

Determina se tutti gli elementi di una sequenza soddisfano una condizione.

Non applicabile.

Aggregate … In … Into All(…)

Enumerable.All<TSource>

Queryable.All<TSource>

Uno

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Contains

Consente di stabilire se una sequenza contiene un elemento specifico.

Non applicabile.

Non applicabile.

Enumerable.Contains

Queryable.Contains

Esempi di sintassi dell'espressione di query

In questi esempi viene utilizzata la clausola Aggregate in Visual Basic come parte della condizione di filtro in una query LINQ.

Nell'esempio seguente viene utilizzata la clausola Aggregate e il metodo di estensione All<TSource> per restituire da un insieme le persone con animali domestici di età superiore a quella specificata.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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 successivo viene utilizzata la clausola Aggregate e il metodo di estensione Any per restituire da un insieme le persone con almeno un animale domestico di età superiore a quella specificata.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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

Ulteriori informazioni sull'esecuzione delle operazioni del quantificatore

Vedere anche

Attività

Procedura: specificare dinamicamente i filtri dei predicati in fase di esecuzione (Guida per programmatori C#)

Concetti

Cenni preliminari sugli operatori di query standard

Riferimenti

Clausola di aggregazione (Visual Basic)

System.Linq