Megosztás a következőn keresztül:


Quantifier-műveletek a LINQ-ban (C#)

A Quantifier-műveletek olyan Boolean értéket adnak vissza, amely jelzi, hogy a sorozat egyes elemei megfelelnek-e egy feltételnek.

Fontos

Ezek a minták adatforrást System.Collections.Generic.IEnumerable<T> használnak. Adatforrások és kifejezésfák használata alapján.System.Linq.IQueryProviderSystem.Linq.IQueryable<T> A kifejezésfák korlátozottan használhatják az engedélyezett C# szintaxist. Emellett minden adatforrás IQueryProvider , például az EF Core további korlátozásokat is alkalmazhat. Ellenőrizze az adatforrás dokumentációját.

Az alábbi ábra két különböző kvantálási műveletet ábrázol két különböző forrásütemezésen. Az első művelet megkérdezi, hogy az elemek közül bármelyik az "A" karakter-e. A második művelet megkérdezi, hogy az összes elem az "A" karakter-e. Ebben a példában mindkét metódus visszatér true .

LINQ Quantifier-műveletek

Metódus neve Leírás C# lekérdezési kifejezés szintaxisa További információ
Mind Meghatározza, hogy a sorozat összes eleme megfelel-e egy feltételnek. Nem alkalmazható. Enumerable.All
Queryable.All
Bármely Meghatározza, hogy a sorozat bármely eleme megfelel-e egy feltételnek. Nem alkalmazható. Enumerable.Any
Queryable.Any
Contains Meghatározza, hogy egy sorozat tartalmaz-e egy adott elemet. Nem alkalmazható. Enumerable.Contains
Queryable.Contains

Mind

Az alábbi példa az All összes vizsgán 70 fölötti pontszámot elért tanulók megkeresésére használható.

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

Bármely

Az alábbi példa a Any 95-nél nagyobb pontszámot elért diákok megkeresésére használható bármely vizsgán.

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

Az alábbi példa azokat a Contains tanulókat keresi, akik pontosan 95 pontot szereztek egy vizsgán.

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

Lásd még