Where 절(Visual Basic)

쿼리에 대한 필터링 조건을 지정합니다.

구문

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 절을 사용하여 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

예제 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

참고 항목