Compartir a través de


Operaciones cuantificadoras en LINQ (C#)

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

Importante

En estos ejemplos se usa un origen de datos System.Collections.Generic.IEnumerable<T>. Los orígenes de datos basados en System.Linq.IQueryProvider usan orígenes de datos System.Linq.IQueryable<T> y árboles de expresión. Los árboles de expresión tienen limitaciones en la sintaxis de C# permitida. Además, cada origen de datos de IQueryProvider, como EF Core puede imponer más restricciones. Compruebe la documentación del origen de datos.

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.

Operaciones cuantificadoras en LINQ

Nombre del método Descripción Sintaxis de la expresión de consulta de C# Más información
Todas Determina si todos los elementos de una secuencia cumplen una condición. No es aplicable. Enumerable.All
Queryable.All
Cualquiera Determina si algunos de los elementos de una secuencia cumplen una condición. No es aplicable. Enumerable.Any
Queryable.Any
Contiene Determina si una secuencia contiene un elemento especificado. No aplicable. Enumerable.Contains
Queryable.Contains

All

En el siguiente ejemplo se usa el All para encontrar a los estudiantes que han obtenido una puntuación por encima de 70 en todos los exámenes.

IEnumerable<string> names = from student in students
                            where student.Scores.All(score => score > 70)
                            select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Cesar Garcia: 71, 86, 77, 97
// Nancy Engström: 75, 73, 78, 83
// Ifunanya Ugomma: 84, 82, 96, 80

Any

En el siguiente ejemplo se usa el Any para encontrar a los estudiantes que han obtenido una puntuación por encima de 95 en cualquier examen.

IEnumerable<string> names = from student in students
                            where student.Scores.Any(score => score > 95)
                            select $"{student.FirstName} {student.LastName}: {student.Scores.Max()}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Svetlana Omelchenko: 97
// Cesar Garcia: 97
// Debra Garcia: 96
// Ifeanacho Jamuike: 98
// Ifunanya Ugomma: 96
// Michelle Caruana: 97
// Nwanneka Ifeoma: 98
// Martina Mattsson: 96
// Anastasiya Sazonova: 96
// Jesper Jakobsson: 98
// Max Lindgren: 96

Contiene

En el siguiente ejemplo se usa el Contains para encontrar a los estudiantes que han obtenido una puntuación de exactamente 95 en un examen.

IEnumerable<string> names = from student in students
                            where student.Scores.Contains(95)
                            select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";

foreach (string name in names)
{
    Console.WriteLine($"{name}");
}

// This code produces the following output:
//
// Claire O'Donnell: 56, 78, 95, 95
// Donald Urquhart: 92, 90, 95, 57

Consulte también