Operace kvantifikátoru v LINQ (C#)
Operace kvantifikátoru Boolean vrací hodnotu, která určuje, zda některé nebo všechny prvky v sekvenci splňují podmínku.
Důležité
Tyto ukázky používají System.Collections.Generic.IEnumerable<T> zdroj dat. Zdroje dat založené na System.Linq.IQueryProvider použití System.Linq.IQueryable<T> zdrojů dat a stromů výrazů Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat, například EF Core, IQueryProvider
může navíc uplatňovat další omezení. Projděte si dokumentaci ke zdroji dat.
Následující obrázek znázorňuje dvě různé operace kvantifikátoru ve dvou různých zdrojových sekvencích. První operace se zeptá, jestli některý z prvků je znakem "A". Druhá operace se zeptá, jestli jsou všechny prvky znakem A. V tomto příkladu se vrátí true
obě metody.
Název metody | Popis | Syntaxe výrazu dotazu jazyka C# | Další informace |
---|---|---|---|
Všechny | Určuje, zda všechny prvky v sekvenci splňují podmínku. | Nevztahuje se. | Enumerable.All Queryable.All |
Všechny | Určuje, zda některé prvky v sekvenci splňují podmínku. | Nevztahuje se. | Enumerable.Any Queryable.Any |
Contains | Určuje, zda sekvence obsahuje zadaný prvek. | Nevztahuje se. | Enumerable.Contains Queryable.Contains |
Všechny
Následující příklad používá All
k vyhledání studentů, kteří získali skóre nad 70 na všech zkouškách.
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
Všechny
Následující příklad používá Any
k vyhledání studentů, kteří získali skóre větší než 95 na jakékoli zkoušce.
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
Contains
Následující příklad používá Contains
k vyhledání studentů s skóre přesně 95 na zkoušku.
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