Quantifiziereroperationen in LINQ (C#)
Quantifizierer-Vorgänge geben einen Boolean-Wert zurück, der angibt, ob einige oder alle Elemente in einer Sequenz eine Bedingung erfüllen.
Wichtig
In diesen Beispielen wird eine System.Collections.Generic.IEnumerable<T>-Datenquelle verwendet. Datenquellen, die auf System.Linq.IQueryProvider basieren, verwenden System.Linq.IQueryable<T>-Datenquellen und Ausdrucksbaumstrukturen. Ausdrucksbaumstrukturen haben Einschränkungen für die zulässige C#-Syntax. Darüber hinaus kann jede IQueryProvider
-Datenquelle, z. B. EF Core, weitere Einschränkungen erzwingen. Konsultieren Sie die Dokumentation für Ihre Datenquelle.
Die folgende Abbildung zeigt zwei verschiedene Quantifizierer-Vorgänge bei zwei verschiedenen Quellsequenzen. Die erste Operation fragt, ob eines der Elemente das Zeichen „A“ ist. Die zweite Operation fragt, ob alle Elemente das Zeichen „A“ sind. Beide Methoden geben in diesem Beispiel true
zurück.
Methodenname | Beschreibung | C#-Abfrageausdruckssyntax | Weitere Informationen |
---|---|---|---|
Alle | Bestimmt, ob alle Elemente in einer Sequenz eine Bedingung erfüllen. | Nicht zutreffend. | Enumerable.All Queryable.All |
Beliebig | Bestimmt, ob Elemente einer Sequenz eine Bedingung erfüllen. | Nicht zutreffend. | Enumerable.Any Queryable.Any |
Enthält | Bestimmt, ob eine Sequenz ein angegebenes Element enthält. | Nicht zutreffend. | Enumerable.Contains Queryable.Contains |
All
Im folgenden Beispiel wird All
verwendet, um Lernende zu ermitteln, die bei allen Prüfungen eine höhere Bewertung als 70 hatten.
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
Any
Im folgenden Beispiel wird Any
verwendet, um Lernende zu ermitteln, die bei einem Examen eine höhere Bewertung als 95 hatten.
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
Enthält
Im folgenden Beispiel wird Contains
verwendet, um Lernende zu ermitteln, die bei einer Prüfung eine Bewertung von genau 95 hatten.
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