Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Операции квантификатора возвращают Boolean значение, указывающее, удовлетворяют ли некоторые или все элементы последовательности определённому условию.
Это важно
В этих примерах используется System.Collections.Generic.IEnumerable<T> источник данных. Источники данных, основанные на System.Linq.IQueryProvider, используют System.Linq.IQueryable<T> источники данных и деревья выражений. Деревья выражений имеют ограничения на допустимый синтаксис C#. Кроме того, каждый IQueryProvider источник данных, например EF Core , может наложить больше ограничений. Ознакомьтесь с документацией по источнику данных.
На следующем рисунке показаны две различные операции квантификатора в двух разных исходных последовательностях. Первая операция спрашивает, является ли любой из элементов символом A. Вторая операция спрашивает, являются ли все элементы символом A. Оба метода возвращают true в этом примере.
| Имя метода | Описание | Синтаксис выражения запроса C# | Дополнительная информация |
|---|---|---|---|
| Все | Определяет, соответствуют ли все элементы в последовательности условию. | Неприменимо. | Enumerable.All Queryable.All |
| Любое | Определяет, соответствуют ли все элементы в последовательности условию. | Неприменимо. | Enumerable.Any Queryable.Any |
| Содержит | Определяет, содержит ли последовательность указанный элемент. | Неприменимо. | Enumerable.Contains Queryable.Contains |
Все
В следующем примере используется All для поиска студентов, которые получили более 70 баллов на всех экзаменах.
Замечание
Общие источники данных для этой области см. в статье "Обзор операторов стандартных запросов ".
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 используется для поиска студентов, которые набрали более 95 баллов на любом экзамене.
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 для поиска студентов, которые набрали ровно 95 баллов на экзамене.
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