Operacje kwantyfikatora w LINQ (C#)
Operacje kwantyfikatora zwracają wartość wskazującą Boolean , czy niektóre lub wszystkie elementy w sekwencji spełniają warunek.
Ważne
Te przykłady używają System.Collections.Generic.IEnumerable<T> źródła danych. Źródła danych oparte na System.Linq.IQueryProviderSystem.Linq.IQueryable<T> źródłach danych i drzewach wyrażeń. Drzewa wyrażeń mają ograniczenia dotyczące dozwolonej składni języka C#. Ponadto każde IQueryProvider
źródło danych, takie jak EF Core , może nakładać więcej ograniczeń. Zapoznaj się z dokumentacją źródła danych.
Poniższa ilustracja przedstawia dwie różne operacje kwantyfikatora na dwóch różnych sekwencjach źródłowych. Pierwsza operacja pyta, czy którykolwiek z elementów jest znakiem "A". Druga operacja pyta, czy wszystkie elementy są znakiem "A". Obie metody zwracają true
w tym przykładzie.
Nazwa metody | opis | Składnia wyrażeń zapytań języka C# | Więcej informacji |
---|---|---|---|
wszystkie | Określa, czy wszystkie elementy w sekwencji spełniają warunek. | Nie dotyczy. | Enumerable.All Queryable.All |
Dowolne | Określa, czy dowolne elementy w sekwencji spełniają warunek. | Nie dotyczy. | Enumerable.Any Queryable.Any |
Contains | Określa, czy sekwencja zawiera określony element. | Nie dotyczy. | Enumerable.Contains Queryable.Contains |
wszystkie
W poniższym przykładzie użyto elementu , All
aby znaleźć uczniów, którzy uzyskali wynik powyżej 70 na wszystkich egzaminach.
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
Dowolne
W poniższym przykładzie użyto elementu , Any
aby znaleźć uczniów, którzy zdobyli wynik większy niż 95 na dowolnym egzaminie.
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
W poniższym przykładzie użyto elementu , Contains
aby znaleźć uczniów, którzy zdobyli dokładnie 95 na egzaminie.
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