Where 句 (Visual Basic)Where Clause (Visual Basic)

クエリのフィルター条件を指定します。Specifies the filtering condition for a query.


Where condition  


必須。Required. コレクション内の現在の項目の値が出力コレクションに含まれるかどうかを決定する式。An expression that determines whether the values for the current item in the collection are included in the output collection. 式は、@no__t 0 の値または Boolean の値に相当する値に評価される必要があります。The expression must evaluate to a Boolean value or the equivalent of a Boolean value. 条件が True に評価された場合、要素はクエリの結果に含まれます。それ以外の場合、要素はクエリの結果から除外されます。If the condition evaluates to True, the element is included in the query result; otherwise, the element is excluded from the query result.


@No__t-0 句を使用すると、特定の条件を満たす要素のみを選択してクエリデータをフィルター処理できます。The Where clause enables you to filter query data by selecting only elements that meet certain criteria. @No__t-0 句が True に評価される値を持つ要素がクエリ結果に含まれます。その他の要素は除外されます。Elements whose values cause the Where clause to evaluate to True are included in the query result; other elements are excluded. @No__t-0 句で使用される式は、値がゼロの場合に False に評価される整数など、Boolean または Boolean に相当する値に評価される必要があります。The expression that is used in a Where clause must evaluate to a Boolean or the equivalent of a Boolean, such as an Integer that evaluates to False when its value is zero. @No__t-1、`Or`、`AndAlso`、`OrElse`、`Is`、`IsNot` などの論理演算子を使用して、@no__t 0 句で複数の式を組み合わせることができます。You can combine multiple expressions in a Where clause by using logical operators such as And, Or, AndAlso, OrElse, Is, and IsNot.

既定では、クエリ式は、アクセスされるまで評価されません。たとえば、データバインドされている場合や、@no__t 0 ループで反復処理される場合です。By default, query expressions are not evaluated until they are accessed—for example, when they are data-bound or iterated through in a For loop. その結果、Where 句は、クエリがアクセスされるまで評価されません。As a result, the Where clause is not evaluated until the query is accessed. @No__t-0 句で使用されているクエリの外部の値がある場合は、クエリの実行時に Where 句で適切な値が使用されていることを確認してください。If you have values external to the query that are used in the Where clause, ensure that the appropriate value is used in the Where clause at the time the query is executed. クエリ実行の詳細については、「初めてのLINQ クエリの作成」を参照してください。For more information about query execution, see Writing Your First LINQ Query.

@No__t-0 句内で関数を呼び出して、コレクション内の現在の要素の値に対して計算または操作を実行することができます。You can call functions within a Where clause to perform a calculation or operation on a value from the current element in the collection. @No__t-0 句で関数を呼び出すと、クエリがアクセス時ではなく定義された直後に実行される可能性があります。Calling a function in a Where clause can cause the query to be executed immediately when it is defined instead of when it is accessed. クエリ実行の詳細については、「初めてのLINQ クエリの作成」を参照してください。For more information about query execution, see Writing Your First LINQ Query.


次のクエリ式では、From 句を使用して、customers コレクション内の Customer オブジェクトごとに範囲変数 cust を宣言しています。The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. @No__t-0 句は範囲変数を使用して、指定された地域の顧客に出力を制限します。The Where clause uses the range variable to restrict the output to customers from the specified region. @No__t-0 ループでは、クエリ結果に各顧客の会社名が表示されます。The For Each loop displays the company name for each customer in the query result.

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
End Sub


次の例では、Where 句で And および Or 論理演算子を使用します。The following example uses And and Or logical operators in the Where clause.

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)

    ' 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

関連項目See also