Sdílet prostřednictvím


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.

Operace kvantifikátoru LINQ

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

Viz také