クエリのフィルター条件を指定します。
構文
Where condition
部品
condition
必須。 コレクション内の現在の項目の値を出力コレクションに含めるかどうかを決定する式。 式は、 Boolean
値または Boolean
値と同等の値に評価される必要があります。 条件が True
に評価された場合、要素はクエリ結果に含まれます。それ以外の場合、要素はクエリ結果から除外されます。
注釈
Where
句を使用すると、特定の条件を満たす要素のみを選択してクエリ データをフィルター処理できます。
Where
句がTrue
に評価される値を持つ要素はクエリ結果に含まれます。他の要素は除外されます。
Where
句で使用される式は、値が 0 の場合にFalse
に評価される整数など、Boolean
または同等のBoolean
に評価される必要があります。
And
、Or
、AndAlso
、OrElse
、Is
、IsNot
などの論理演算子を使用して、Where
句で複数の式を組み合わせることができます。
既定では、クエリ式はアクセスされるまで評価されません。たとえば、 For
ループ内でデータバインドや反復処理が行われます。 その結果、 Where
句は、クエリにアクセスするまで評価されません。
Where
句で使用されるクエリの外部に値がある場合は、クエリの実行時にWhere
句で適切な値が使用されていることを確認します。 クエリの実行の詳細については、「 最初の LINQ クエリの記述」を参照してください。
Where
句内で関数を呼び出して、コレクション内の現在の要素の値に対して計算または操作を実行できます。
Where
句で関数を呼び出すと、クエリはアクセス時ではなく、定義されている場合にすぐに実行される可能性があります。 クエリの実行の詳細については、「 最初の LINQ クエリの記述」を参照してください。
例 1
次のクエリ式では、From
句を使用して、cust
コレクション内の各Customer
オブジェクトの範囲変数customers
を宣言します。
Where
句では、範囲変数を使用して、指定したリージョンの顧客に出力を制限します。
For Each
ループには、クエリ結果の各顧客の会社名が表示されます。
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub
例 2
次の例では、Where
句でAnd
とOr
論理演算子を使用します。
Private Sub DisplayElements()
Dim elements As List(Of Element) = BuildList()
' Get a list of elements that have an atomic number from 12 to 14,
' or that have a name that ends in "r".
Dim subset = From theElement In elements
Where (theElement.AtomicNumber >= 12 And theElement.AtomicNumber < 15) _
Or theElement.Name.EndsWith("r")
Order By theElement.Name
For Each theElement In subset
Console.WriteLine(theElement.Name & " " & theElement.AtomicNumber)
Next
' Output:
' Aluminum 13
' Magnesium 12
' Silicon 14
' Sulfur 16
End Sub
Private Function BuildList() As List(Of Element)
Return New List(Of Element) From
{
{New Element With {.Name = "Sodium", .AtomicNumber = 11}},
{New Element With {.Name = "Magnesium", .AtomicNumber = 12}},
{New Element With {.Name = "Aluminum", .AtomicNumber = 13}},
{New Element With {.Name = "Silicon", .AtomicNumber = 14}},
{New Element With {.Name = "Phosphorous", .AtomicNumber = 15}},
{New Element With {.Name = "Sulfur", .AtomicNumber = 16}}
}
End Function
Public Class Element
Public Property Name As String
Public Property AtomicNumber As Integer
End Class
こちらも参照ください
- Visual Basic での LINQ の概要
- クエリ
- From 句
- Select 句
- For Each...Next ステートメント
.NET