Operações de quantificador

Operações de quantificador retornam uma Boolean valor que indica se alguns ou todos os elementos em uma seqüência satisfazem uma condição.

A ilustração a seguir mostra duas operações de quantificador diferentes em duas seqüências de origem diferente. A primeira operação pergunta se um ou mais elementos são o caractere 'A' e o resultado é true. A segunda operação pergunta se todos os elementos são o caractere 'A' e o resultado é true.

Operações de quantificador LINQ

Os métodos de operador de consulta padrão que realizam operações de quantificador estão listados na seção a seguir.

Métodos

Nome do método

Descrição

C# Expressão de consulta sintaxe

Visual BasicSintaxe de expressão de consulta

Mais informações

Todos

Determina se todos os elementos em uma seqüência satisfazem uma condição.

Não aplicável.

Aggregate … In … Into All(…)

Enumerable.All<TSource>

Queryable.All<TSource>

Qualquer

Determina se quaisquer elementos em uma seqüência satisfazem uma condição.

Não aplicável.

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Contém

Determina se uma seqüência contém um elemento especificado.

Não aplicável.

Não aplicável.

Enumerable.Contains

Queryable.Contains

Exemplos de sintaxe de expressão de consulta

Esses exemplos usam o Aggregate cláusula Visual Basic como parte da condição de filtragem em uma consulta LINQ.

O exemplo a seguir usa a Aggregate cláusula e o All<TSource> o método de extensão para retornar de uma coleção às pessoas cujas animais de estimação são todos os mais antigos do que a duração especificada.

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

O próximo exemplo utiliza o Aggregate cláusula e o Any o método de extensão para retornar de uma coleção às pessoas que têm pelo menos um animal de estimação que é mais antigo que a duração especificada.

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

Consulte também

Tarefas

Como: especificar dinamicamente o predicado filtros em tempo de execução (guia de programação TRANSLATION FROM VPE FOR CSHARP)

Como: Consulta de frases que contêm um conjunto especificado de palavras (LINQ)

Referência

Aggregate Clause (Visual Basic)

System.Linq

Conceitos

Visão geral operadores de consulta padrão