From 절(Visual Basic)

하나 이상의 범위 변수와 쿼리할 컬렉션을 지정합니다.

구문

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

부분

용어 정의
element 필수입니다. 컬렉션의 요소를 반복하는 데 사용되는 범위 변수입니다. 쿼리가 collection을 반복할 때 범위 변수는 collection의 각 멤버를 참조하는 데 사용됩니다. 열거 가능한 형식이어야 합니다.
type 선택 사항. element의 형식입니다. type이 지정되지 않으면 element 형식이 collection에서 유추됩니다.
collection 필수입니다. 쿼리할 컬렉션을 나타냅니다. 열거 가능한 형식이어야 합니다.

설명

From 절은 쿼리의 원본 데이터와 원본 컬렉션의 요소를 참조하는 데 사용되는 변수를 식별하는 데 사용됩니다. 이러한 변수를 범위 변수라고 합니다. 집계된 결과만 반환하는 쿼리를 식별하는 데 Aggregate 절이 사용되는 경우를 제외하고 쿼리에는 From 절이 필요합니다. 자세한 내용은 Aggregate 절을 참조하세요.

쿼리에 여러 개의 From 절을 지정하여 조인할 여러 컬렉션을 식별할 수 있습니다. 여러 컬렉션이 지정되면 독립적으로 반복되거나 관련되어 있는 경우 조인할 수 있습니다. Select 절을 사용하여 암시적으로 컬렉션을 조인하거나 Join 또는 Group Join 절을 사용하여 명시적으로 컬렉션을 조인할 수 있습니다. 대안으로 단일 From 절에 여러 범위 변수 및 컬렉션을 지정할 수 있습니다. 이때 각 관련 범위 변수 및 컬렉션은 쉼표로 구분됩니다. 다음 코드 예에서는 From 절에 대한 두 가지 구문 옵션을 모두 보여 줍니다.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

From 절은 For 루프의 범위와 유사한 쿼리 범위를 정의합니다. 따라서 쿼리 범위의 각 element 범위 변수에는 고유한 이름이 있어야 합니다. 쿼리에 여러 개의 From 절을 지정할 수 있으므로 후속 From 절은 From 절의 범위 변수를 참조하거나 이전 From 절의 범위 변수를 참조할 수 있습니다. 예를 들어, 다음 예에서는 두 번째 절의 컬렉션이 첫 번째 절의 범위 변수 속성을 기반으로 하는 중첩된 From 절을 보여 줍니다.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

From 절 뒤에는 쿼리를 구체화하기 위한 추가 쿼리 절의 조합이 올 수 있습니다. 다음과 같은 방법으로 쿼리를 구체화할 수 있습니다.

  • FromSelect 절을 사용하여 암시적으로 여러 컬렉션을 결합하거나 Join 또는 Group Join 절을 사용하여 명시적으로 여러 컬렉션을 결합합니다.

  • 쿼리 결과를 필터링하려면 Where 절을 사용합니다.

  • Order By 절을 사용하여 결과를 정렬합니다.

  • Group By 절을 사용하여 유사한 결과를 그룹화합니다.

  • 전체 쿼리 결과를 평가할 집계 함수를 식별하려면 Aggregate 절을 사용합니다.

  • 컬렉션 대신 식에 의해 값이 결정되는 반복 변수를 도입하려면 Let 절을 사용합니다.

  • 중복된 쿼리 결과를 무시하려면 Distinct 절을 사용합니다.

  • Skip, Take, Skip WhileTake While 절을 사용하여 반환할 결과 부분을 식별합니다.

예시

다음 쿼리 식은 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

참고 항목