Sdílet prostřednictvím


Operace kvantifikátoru

Kvantifikátor operace vracejí Boolean hodnotu označující, zda některé nebo všechny prvky v posloupnosti splňovat podmínku.

Následující obrázek znázorňuje dvě různé kvantifikátor operace na dvou různých zdrojových sekvence.První operace, požádá-li jeden nebo více prvků jsou znak "A" a výsledkem je true.Druhá operace zobrazí dotaz, pokud jsou všechny prvky znak "A" a výsledek je true.

LINQ – operace kvantifikátoru

V následující části jsou uvedeny metody operátor standardního dotazu, které provádějí operace kvantifikátor.

Metody

Název metody

Description

Syntaxi výrazu dotazu C#

Visual BasicSyntaxe dotazu výraz

Další informace

Všechna

Určuje, zda jsou všechny prvky v pořadí splňují podmínku.

Nelze použít

Aggregate … In … Into All(…)

Enumerable.All``1

Queryable.All``1

Žádné

Určuje, zda všechny prvky v posloupnosti splňovat podmínku.

Nelze použít

Aggregate … In … Into Any()

Enumerable.Any``1

Queryable.Any``1

Obsahuje

Určuje, zda je posloupnost obsahuje zadaný prvek.

Nelze použít

Nelze použít

Enumerable.Contains``1

Queryable.Contains``1

Příklady syntaxe výraz dotazu

Tyto příklady použití Aggregate v klauzuli Visual Basic jako součást podmínku filtrování LINQ dotazu.

V následujícím příkladu Aggregate klauzule a All``1 metoda rozšíření z kolekce vrátit tyto osoby, jejichž domácí zvířata jsou všechny starší než zadaný věku.

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

V dalším příkladu Aggregate klauzule a Any``1 metoda rozšíření vrátit z kolekce domácími uživatelé, kteří mají alespoň jednu, která je starší než zadaný věku.

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

Viz také

Úkoly

Postupy: Dynamické určování filtrů predikátů při běhu (Průvodce programováním v C#)

Postupy: Vytvoření dotazu na věty obsahující zadanou množinu slov (LINQ)

Referenční dokumentace

Aggregate – klauzule (Visual Basic)

System.Linq

Koncepty

Přehled standardních operátorů dotazu