Udostępnij za pośrednictwem


Operacje kwantyfikatora

Kwantyfikator operacji zwraca Boolean wartość, która wskazuje, czy niektóre lub wszystkie elementy w kolejności od spełnienia warunku.

Następująca ilustracja przedstawia dwie operacje różnych kwantyfikator na dwa różne źródła sekwencji.Pierwsza operacja zwraca się, jeśli jeden lub więcej elementów jest znak "A", a wynik jest true.Druga operacja zwraca się, jeśli wszystkie elementy są znak "A", a wynik jest true.

Operacje kwantyfikatora programu LINQ

Kwerendy standardowe metody operatora, wykonujących operacje kwantyfikator są wymienione w poniższej sekcji.

Metody

Nazwa metody

Opis

Kwerendy języka C# składni wyrażenia

Visual BasicSkładni wyrażenia kwerendy

Więcej informacji

Wszystkie

Określa, czy wszystkie elementy w kolejności od spełnienia warunku.

Nie dotyczy.

Aggregate … In … Into All(…)

Enumerable.All``1

Queryable.All``1

Wszelkie

Określa, czy wszystkie elementy w sekwencji spełniają warunek.

Nie dotyczy.

Aggregate … In … Into Any()

Enumerable.Any``1

Queryable.Any``1

Zawiera

Określa, czy sekwencja zawiera określony element.

Nie dotyczy.

Nie dotyczy.

Enumerable.Contains``1

Queryable.Contains``1

Przykłady składni wyrażenia kwerendy

W tych przykładach korzysta Aggregate w klauzuli Visual Basic jako część warunek filtrowania w kwerendzie LINQ.

W poniższym przykładzie użyto Aggregate klauzuli i All``1 metodę rozszerzenia do zwrotu ze zbioru tych osób, w których zwierzęta są wszystkie starsze niż określony wiek.

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

W następnym przykładzie użyto Aggregate klauzuli i Any``1 metodę rozszerzenia do zwrotu ze zbioru tych ludzi, którzy mają co najmniej jedno pet, który jest starsza niż określony wiek.

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

Zobacz też

Zadania

Porady: dynamiczne określanie filtrów predykatów w środowisku uruchomieniowym (Przewodnik programowania w języku C#)

Porady: zapytanie o zdania zawierające określony zestaw wyrazów (LINQ)

Informacje

Aggregate — Klauzula (Visual Basic)

System.Linq

Koncepcje

Standardowe operatory zapytań — Omówienie