Opérations de quantificateur dans LINQ (C#)
Les opérations de quantificateur retournent une valeur Boolean qui indique si certains ou tous les éléments d’une séquence remplissent une condition.
Important
Ces exemples utilisent une source de données System.Collections.Generic.IEnumerable<T>. Les sources de données basées sur System.Linq.IQueryProvider utilisent des sources de données System.Linq.IQueryable<T> et des arborescences d’expressions. Les arborescences d’expressions présentent des limitations sur la syntaxe C# autorisée. De plus, chaque source de données IQueryProvider
, telle que EF Core peut imposer des restrictions supplémentaires. Consultez la documentation de votre source de données.
L’illustration suivante représente deux opérations de quantificateur différentes sur deux séquences sources différentes. La première opération demande s’il y a des éléments qui sont le caractère « A ». La seconde opération demande si tous les éléments sont le caractère « A ». Les deux méthodes retournent true
dans cet exemple.
Nom de la méthode | Description | Syntaxe d'expression de requête C# | Informations complémentaires |
---|---|---|---|
Tous | Détermine si tous les éléments d’une séquence remplissent une condition. | Non applicable. | Enumerable.All Queryable.All |
Quelconque | Détermine si certains éléments d’une séquence remplissent une condition. | Non applicable. | Enumerable.Any Queryable.Any |
Contient | Détermine si une séquence contient un élément spécifié. | Non applicable. | Enumerable.Contains Queryable.Contains |
Tous
L’exemple suivant utilise le All
pour rechercher les étudiants qui ont obtenu un score supérieur à 70 sur tous les examens.
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
Tout
L’exemple suivant utilise le Any
pour rechercher les étudiants ayant obtenu un score supérieur à 95 sur n’importe quel 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
contient
L’exemple suivant utilise le Contains
pour rechercher les étudiants qui ont obtenu un score exact de 95 à 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