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
.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: