量指定子操作 (Visual Basic)
量指定子操作は、シーケンス内の要素の一部またはすべてが条件を満たしているかどうかを示す Boolean 値を返します。
次の図は、2 つの異なるソース シーケンスに対する、2 つの異なる量指定子操作を示しています。 最初の操作では、いずれかの要素が文字 'A' であるか尋ねられます。 次の操作では、すべての要素が文字 'A' であるか尋ねられます。 この例では、両方のメソッドで true
が返されます。
次のセクションでは、量指定子操作を実行する標準クエリ演算子のメソッドの一覧を示します。
メソッド
メソッド名 | 説明 | Visual Basic のクエリ式の構文 | 説明 |
---|---|---|---|
すべて | シーケンス内のすべての要素が条件を満たしているかどうかを調べます。 | Aggregate … In … Into All(…) |
Enumerable.All Queryable.All |
どれでも可 | シーケンス内のいずれかの要素が条件を満たしているかどうかを調べます。 | Aggregate … In … Into Any() |
Enumerable.Any Queryable.Any |
内容 | 指定した要素がシーケンスに格納されているかどうかを調べます。 | 該当なし。 | Enumerable.Contains Queryable.Contains |
クエリ式の構文例
これらの例では、LINQ クエリのフィルタリング条件の一部に Visual Basic の Aggregate
句を使用しています。
次の例では、Aggregate
句と All 拡張メソッドを使用して、飼っているすべてのペットが特定の年齢を超えている人をコレクションから取得します。
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 拡張メソッドを使用して、飼っているペットの少なくとも 1 匹が特定の年齢を超えている人をコレクションから取得します。
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
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET