Compartir a través de


Operaciones cuantificadoras en LINQ (C#)

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

Importante

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

En la ilustración siguiente se muestran dos operaciones cuantificadores diferentes en dos secuencias de origen diferentes. 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 del cuantificador LINQ

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

Todos

En el ejemplo siguiente se usa el All para buscar a los alumnos que puntuaron 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

Cualquiera

En el siguiente ejemplo se usa Any para buscar a los alumnos que han puntuado más 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 Contains para buscar a los alumnos que puntúan 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