次の方法で共有


Where 句 (Visual Basic)

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

構文

Where condition  

部品

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

注釈

Where句を使用すると、特定の条件を満たす要素のみを選択してクエリ データをフィルター処理できます。 Where句がTrueに評価される値を持つ要素はクエリ結果に含まれます。他の要素は除外されます。 Where句で使用される式は、値が 0 の場合にFalseに評価される整数など、Booleanまたは同等のBooleanに評価される必要があります。 AndOrAndAlsoOrElseIsIsNotなどの論理演算子を使用して、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 句でAndOr論理演算子を使用します。

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

こちらも参照ください