Where 句 (Visual Basic)

クエリのフィルター処理条件を指定します。

Where condition

指定項目

  • condition
    必ず指定します。コレクション内の現在の項目の値を、出力されるコレクションに含めるかどうかを決定する式。この式は、Boolean 値、またはBoolean 値の同等値に評価される必要があります。条件の評価が True の場合、要素はクエリ結果に含まれます。それ以外の場合、要素はクエリ結果から除外されます。

解説

Where 句を使用すると、特定の条件を満たす要素だけを選択することでクエリ データをフィルター処理できます。クエリ結果には、値が Where 句によって True と評価される要素が格納されます。それ以外の要素は除外されます。Where 句で使用される式は、Boolean と評価される式、またはBoolean と同等 (値がゼロの場合は False と評価される整数など) でなければなりません。And、Or、AndAlso、OrElse、Is、IsNot などの論理演算子を使用することで、Where 句の中で複数の式を組み合わせることができます。

既定では、クエリ式はアクセスされる (データにバインドされたり、For ループで反復されたりする) まで評価されません。この結果、Where 句は、クエリがアクセスされるまで評価されません。Where 句で使用するクエリに対して外部の値がある場合は、クエリの実行時に Where 句で適切な値が使用されることを確認してください。クエリ実行の詳細については、「初めての LINQ クエリの作成 (Visual Basic)」を参照してください。

Where 句の中で関数を呼び出して、コレクション内の現在の要素の値に対して計算または操作を実行できます。Where 句の中で関数を呼び出すと、アクセス時ではなく定義時に直ちにクエリを実行できます。クエリ実行の詳細については、「初めての LINQ クエリの作成 (Visual Basic)」を参照してください。

使用例

次のクエリ式では、From 句を使用して、customers コレクション内の各 Customer オブジェクト用の範囲変数 cust を宣言します。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

次の例では 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

参照

関連項目

From 句 (Visual Basic)

Select 句 (Visual Basic)

For Each...Next ステートメント (Visual Basic)

概念

Visual Basic における LINQ の概要

その他の技術情報

クエリ (Visual Basic)