Compartir a través de


Operaciones cuantificadoras (Visual Basic)

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

En la siguiente ilustración se muestran dos operaciones cuantificadoras diferentes en dos secuencias de origen distintas. La primera operación pregunta si alguno de los elementos es el carácter "A". La segunda operación pregunta si todos los elementos son el carácter "A". Ambos métodos devuelven true en este ejemplo.

LINQ Quantifier Operations

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

Métodos

Nombre del método Descripción Sintaxis de expresiones de consulta de Visual Basic Más información
Todas Determina si todos los elementos de una secuencia cumplen una condición. Aggregate … In … Into All(…) Enumerable.All

Queryable.All
Cualquiera Determina si algunos de los elementos de una secuencia cumplen una condición. Aggregate … In … Into Any() Enumerable.Any

Queryable.Any
Contiene Determina si una secuencia contiene un elemento especificado. No es aplicable. Enumerable.Contains

Queryable.Contains

Ejemplos de sintaxis de expresiones de consulta

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

En el siguiente ejemplo se emplea la cláusula Aggregate y el método de extensión All para devolver a las personas que tienen mascotas mayores 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 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 siguiente ejemplo se usa la cláusula Aggregate y el método de extensión Any para devolver a aquellas personas que tienen al menos una mascota mayor que una edad especificada de una colección.

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 también