Operazioni del quantificatore
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.
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 |
---|---|---|---|---|
Tutte |
Determina se tutti gli elementi di una sequenza soddisfano una condizione. |
Non applicabile. |
Aggregate … In … Into All(…) |
|
Uno |
Determina se gli elementi di una sequenza soddisfano una condizione. |
Non applicabile. |
Aggregate … In … Into Any() |
|
Contiene |
Consente di stabilire se una sequenza contiene un elemento specifico. |
Non applicabile. |
Non applicabile. |
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``1 per restituire da una raccolta le persone con animali domestici di età superiore a quella 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 successivo viene utilizzata la clausola Aggregate e il metodo di estensione Any``1 per restituire da una raccolta le persone con almeno un animale domestico di età superiore a quella 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
Attività
Procedura: eseguire una query per trovare frasi che contengono un set specificato di parole (LINQ)
Riferimenti
Clausola Aggregate (Visual Basic)