Udostępnij za pośrednictwem


Kwantyfikator operacji

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

Queryable.All<TSource>

Wszelkie

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

Nie dotyczy.

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Zawiera

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

Nie dotyczy.

Nie dotyczy.

Enumerable.Contains

Queryable.Contains

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

Jak: dynamicznie określ filtry predykat w czasie wykonywania (Podręcznik programowania C#)

Jak: kwerendy dla zdań, które zawierają określony zestaw słów (LINQ)

Informacje

Klauzula agregacji (Visual Basic)

System.Linq

Koncepcje

Omówienie operatory kwerendy standardowe