Operações de quantificador

Quantificador operações retornam um Boolean valor que indica se alguns ou todos os elementos em uma sequência satisfazem uma condição.

A ilustração a seguir representa duas operações diferentes quantificador em duas seqüências de fonte diferente.A primeira operação pergunta se um ou mais dos 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.

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

Métodos

Nome do método

Descrição

Sintaxe de expressão de consulta translation from VPE for Csharp

Visual Basic Sintaxe de expressão de consulta

Mais informações

Todos

Determina se todos os elementos em uma sequê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 sequência satisfazem uma condição.

Não aplicável.

Aggregate … In … Into Any()

Enumerable.Any

Queryable.Any

Contém

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

Não aplicável.

Não aplicável.

Enumerable.Contains

Queryable.Contains

Exemplos de sintaxe de expressão consulta

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

O exemplo a seguir utiliza o Aggregate cláusula e o All<TSource> método de extensão para retornar de uma coleção às pessoas cujas animais de estimação são todos com mais de um especificado Idade.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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 exemplo a seguir utiliza o Aggregate cláusula e o Any método de extensão para retornar de uma coleção as pessoas que têm pelo menos um bicho de estimação que sejam mais antigo do que uma duração especificada.

Class Person
    Private _name As String
    Private _pets As Pet()

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Pets() As Pet()
        Get
            Return _pets
        End Get
        Set(ByVal value As Pet())
            _pets = value
        End Set
    End Property
End Class

Class Pet
    Private _name As String
    Private _age As Integer

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
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

Mais informações sobre como executar operações Quantificando

Consulte também

Tarefas

Como: Dinamicamente especificar filtros de predicado em tempo de execução (Guia de programação C#)

Conceitos

Visão geral de operadores de consulta padrão

Referência

Aggregate Clause (Visual Basic)

System.Linq