量指定子操作
更新 : 2007 年 11 月
量指定操作では、シーケンス内の要素の一部またはすべてが条件を満たすかどうかを示す Boolean 値が返されます。
次の図は、2 つの異なるソース シーケンスに対する 2 つの異なる量指定操作を示しています。最初の操作は、1 つ以上の要素が文字 "A" かどうかを確認し、結果は true になります。2 番目の操作は、すべての要素が文字 "A" かどうかを確認し、結果は true になります。
次のセクションに、量指定操作を実行する標準クエリ演算子のメソッドの一覧を示します。
メソッド
メソッド名 |
説明 |
C# のクエリ式の構文 |
Visual Basic のクエリ式の構文 |
詳細情報 |
---|---|---|---|---|
All |
シーケンス内のすべての要素が条件を満たしているかどうかを判断します。 |
適用できません。 |
Aggregate … In … Into All(…) |
|
Any |
シーケンス内の任意の要素が条件を満たしているかどうかを判断します。 |
適用できません。 |
Aggregate … In … Into Any() |
|
Contains |
指定した要素がシーケンスに含まれているかどうかを判断します。 |
適用できません。 |
適用できません。 |
クエリ式の構文の例
これらの例では、LINQ クエリのフィルタ処理条件の一部として、Visual Basic で Aggregate 句を使用しています。
次の例では、Aggregate 句と All<TSource> 拡張メソッドを使用して、ペットのすべてが指定した年齢よりも上である飼い主のコレクションを返します。
Class Person
Private _name As String
Private _pets As Pet()
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Property Pets() As Pet()
Get
Return _pets
End Get
Set(ByVal value As Pet())
_pets = value
End Set
End Property
End Class
Class Pet
Private _name As String
Private _age As Integer
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Property Age() As Integer
Get
Return _age
End Get
Set(ByVal value As Integer)
_age = value
End Set
End Property
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
Private _name As String
Private _pets As Pet()
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Property Pets() As Pet()
Get
Return _pets
End Get
Set(ByVal value As Pet())
_pets = value
End Set
End Property
End Class
Class Pet
Private _name As String
Private _age As Integer
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Property Age() As Integer
Get
Return _age
End Get
Set(ByVal value As Integer)
_age = value
End Set
End Property
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
量指定操作の実行方法に関する詳細情報
Topic | Location |
---|---|
方法 : 指定された単語のセットを含む文章を照会する (LINQ) | 統合言語クエリ (LINQ: Language-Integrated Query) |
方法 : 指定された単語のセットを含む文章を照会する (LINQ) | dv_Linq |
方法 : 指定された単語のセットを含む文章を照会する (LINQ) | dv_Linq |
参照
処理手順
方法 : 実行時に述語フィルタを動的に指定する (C# プログラミング ガイド)