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.
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(…) |
|
Cualquiera |
Determina si alguno de los elementos de una secuencia satisface una condición. |
No es aplicable |
Aggregate … In … Into Any() |
|
Contiene |
Determina si una secuencia contiene un elemento especificado. |
No es aplicable |
No es aplicable |
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<TSource> 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 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: Buscar frases que contengan un conjunto especificado de palabras (LINQ)
Referencia
Aggregate (Cláusula, Visual Basic)