Kvantifieraråtgärder i LINQ (C#)
Kvantifieraråtgärder returnerar ett Boolean värde som anger om vissa eller alla element i en sekvens uppfyller ett villkor.
Viktigt!
Dessa exempel använder en System.Collections.Generic.IEnumerable<T> datakälla. Datakällor baserade på System.Linq.IQueryProvider användning av System.Linq.IQueryable<T> datakällor och uttrycksträd. Uttrycksträd har begränsningar för den tillåtna C#-syntaxen. Dessutom kan varje IQueryProvider
datakälla, till exempel EF Core , införa fler begränsningar. Kontrollera dokumentationen för din datakälla.
Följande bild visar två olika kvantifieraråtgärder på två olika källsekvenser. Den första åtgärden frågar om något av elementen är tecknet "A". Den andra åtgärden frågar om alla element är tecknet "A". Båda metoderna returneras true
i det här exemplet.
Metodnamn | beskrivning | Syntax för C#-frågeuttryck | Mer information |
---|---|---|---|
Alla | Avgör om alla element i en sekvens uppfyller ett villkor. | Ej tillämpbart. | Enumerable.All Queryable.All |
Alla | Avgör om några element i en sekvens uppfyller ett villkor. | Ej tillämpbart. | Enumerable.Any Queryable.Any |
Innehåller | Avgör om en sekvens innehåller ett angivet element. | Ej tillämpbart. | Enumerable.Contains Queryable.Contains |
Alla
I följande exempel används All
för att hitta elever som fått över 70 poäng på alla prov.
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
Alla
I följande exempel används Any
för att hitta elever som fått fler än 95 poäng på ett prov.
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
Innehåller
I följande exempel används Contains
för att hitta elever som fick exakt 95 poäng på ett prov.
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