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í zdroj dat System.Collections.Generic.IEnumerable<T>. Zdroje dat, které jsou založené na System.Linq.IQueryProvider, používají zdroje dat System.Linq.IQueryable<T> a stromy výrazů . Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat IQueryProvider, například EF Core, 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. Obě metody v tomto příkladu vrátí true.

Operace kvantifikátoru LINQ

Název metody Popis Syntaxe výrazu dotazu jazyka C# Další informace
Všechno Určuje, zda všechny prvky v sekvenci splňují podmínku. Nelze použít. Enumerable.All
Queryable.All
Jakýkoliv Určuje, zda některé prvky v sekvenci splňují podmínku. Nelze použít. Enumerable.Any
Queryable.Any
Obsahuje Určuje, zda sekvence obsahuje zadaný prvek. Nelze použít. Enumerable.Contains
Queryable.Contains

Všechno

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.

Poznámka:

Běžné zdroje dat pro tuto oblast najdete v článku Přehled standardních operátorů dotazů .

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

Jakýkoliv

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

Obsahuje

Následující příklad používá Contains k vyhledání studentů, kteří dosáhli přesně skóre 95 v testu.

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é