Операции квантификаторов
Квантификаторы возвращают значение Boolean, которое указывает, удовлетворяют ли условию некоторые или все элементы в последовательности.
На следующем рисунке показаны два различных квантификатора, примененные к двум различным исходным последовательностям.Первая операция проверяет, является ли один или более элементов буквой "А"; результатом является true.Вторая операция проверяет, являются ли все элементы буквой "А"; результатом является true.
Методы стандартных операторов запросов, которые выполняют операции квантификатора, перечислены в следующем разделе.
Методы
Имя метода |
Описание |
Синтаксис выражения запроса C# |
Синтаксис выражения запроса Visual Basic |
Дополнительные сведения |
---|---|---|---|---|
Все |
Определяет, все ли элементы последовательности удовлетворяют условию. |
Неприменимо. |
Aggregate … In … Into All(…) |
|
Any |
Определяет, удовлетворяют ли некоторые элементы последовательности условию. |
Неприменимо. |
Aggregate … In … Into Any() |
|
Содержит |
Проверяет, содержит ли последовательность указанный элемент. |
Неприменимо. |
Неприменимо. |
Примеры синтаксиса выражений запроса
В этих примерах предложение Aggregate в Visual Basic используется как часть условия фильтрации в запросе LINQ.
В следующем примере предложение Aggregate и метод расширения All<TSource> используются для возвращения из коллекции тех людей, все питомцы которых старше заданного возраста.
Class Person
Public Property Name As String
Public Property Pets As Pet()
End Class
Class Pet
Public Property Name As String
Public Property Age As Integer
End Class
Sub All()
Dim barley As New Pet With {.Name = "Barley", .Age = 4}
Dim boots As New Pet With {.Name = "Boots", .Age = 1}
Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}
Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}
' Create the list of Person objects that will be queried.
Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})
Dim query = From pers In people
Where (Aggregate pt In pers.Pets Into All(pt.Age > 2))
Select pers.Name
Dim sb As New System.Text.StringBuilder()
For Each name As String In query
sb.AppendLine(name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Arlene
' Rui
End Sub
Следующий пример использует предложение Aggregate и метод расширения Any для возвращения из коллекции тех людей, хотя бы один из питомцев которых старше заданного возраста.
Class Person
Public Property Name As String
Public Property Pets As Pet()
End Class
Class Pet
Public Property Name As String
Public Property Age As Integer
End Class
Sub Any()
Dim barley As New Pet With {.Name = "Barley", .Age = 4}
Dim boots As New Pet With {.Name = "Boots", .Age = 1}
Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}
Dim bluemoon As New Pet With {.Name = "Blue Moon", .Age = 9}
Dim daisy As New Pet With {.Name = "Daisy", .Age = 3}
Dim charlotte As New Person With {.Name = "Charlotte", .Pets = New Pet() {barley, boots}}
Dim arlene As New Person With {.Name = "Arlene", .Pets = New Pet() {whiskers}}
Dim rui As New Person With {.Name = "Rui", .Pets = New Pet() {bluemoon, daisy}}
' Create the list of Person objects that will be queried.
Dim people As New System.Collections.Generic.List(Of Person)(New Person() {charlotte, arlene, rui})
Dim query = From pers In people
Where (Aggregate pt In pers.Pets Into Any(pt.Age > 7))
Select pers.Name
Dim sb As New System.Text.StringBuilder()
For Each name As String In query
sb.AppendLine(name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Rui
End Sub
См. также
Задачи
Практическое руководство. Запрос к предложениям, содержащим указанный набор слов (LINQ)
Ссылки
Предложение Aggregate (Visual Basic)