Sdílet prostřednictvím


Kvantifikátor operací

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<TSource>

Queryable.All<TSource>

Žádné

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

Nelze použít

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Obsahuje

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

Nelze použít

Nelze použít

Enumerable.Contains

Queryable.Contains

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<TSource> 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 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

Jak: dynamicky určit predikát filtry za běhu (Příručka programování C#)

Jak: dotaz u vět, které obsahují zadanou sadu slov (LINQ)

Referenční dokumentace

Agregační klauzule (Visual Basic)

System.Linq

Koncepty

Přehled operátorů standardní dotaz