Operaciones cuantificadoras

Las operaciones cuantificadoras devuelven un valor Boolean que indica si algunos o todos los elementos de una secuencia satisfacen una condición.

La ilustración siguiente muestra dos operaciones cuantificadoras diferentes en dos secuencias de origen diferentes. La primera operación pregunta si uno o varios de los elementos son el carácter 'A', y el resultado es true. La segunda operación pregunta si todos los elementos son el carácter 'A', y el resultado es true.

Operaciones cuantificadoras en LINQ

Los métodos de operador de consulta estándar que realizan operaciones cuantificadoras se enumeran en la sección siguiente.

Métodos

Nombre del método

Descripción

Sintaxis de las expresiones de consulta de C#

Sintaxis de las expresiones de consulta de Visual Basic

Más información

Todos

Determina si todos los elementos de una secuencia satisfacen una condición.

No es aplicable

Aggregate … In … Into All(…)

Enumerable.All``1

Queryable.All``1

Cualquiera

Determina si alguno de los elementos de una secuencia satisface una condición.

No es aplicable

Aggregate … In … Into Any()

Enumerable.Any``1

Queryable.Any``1

Contiene

Determina si una secuencia contiene un elemento especificado.

No es aplicable

No es aplicable

Enumerable.Contains``1

Queryable.Contains``1

Ejemplos de sintaxis de expresiones de consulta

En estos ejemplos se utiliza la cláusula Aggregate en Visual Basic como parte de la condición de filtrado de una consulta LINQ.

En el ejemplo siguiente se utiliza la cláusula Aggregate y el método de extensión All``1 para devolver de una colección las personas cuyos animales domésticos tienen más de una edad 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

En el ejemplo siguiente se utiliza la cláusula Aggregate y el método de extensión Any``1 para devolver de una colección las personas que tienen por lo menos un animal doméstico que es mayor que una edad 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

Vea también

Tareas

Cómo: Especificar dinámicamente filtros con predicado en tiempo de ejecución (Guía de programación de C#)

Cómo: Buscar frases que contengan un conjunto especificado de palabras (LINQ)

Referencia

Aggregate (Cláusula, Visual Basic)

System.Linq

Conceptos

Información general sobre operadores de consulta estándar