Group Join 절(Visual Basic)

두 컬렉션을 단일 계층 구조 컬렉션으로 결합합니다. 조인 작업은 일치하는 키를 기반으로 합니다.

구문

Group Join element [As type] In collection _  
  On key1 Equals key2 [ And key3 Equals key4 [... ] ] _  
  Into expressionList  

부분

용어 정의
element 필수입니다. 조인되는 컬렉션에 대한 제어 변수입니다.
type 선택 사항. element의 형식입니다. type이 지정되지 않으면 element 형식이 collection에서 유추됩니다.
collection 필수입니다. Group Join 연산자의 왼쪽에 있는 컬렉션과 결합할 컬렉션입니다. Group Join 절은 Join 절이나 다른 Group Join 절에 중첩될 수 있습니다.
key1 Equals key2 필수입니다. 조인되는 컬렉션의 키를 식별합니다. 조인되는 컬렉션의 키를 비교하려면 Equals 연산자를 사용해야 합니다. 여러 키를 식별하기 위해 And 연산자를 사용하여 조인 조건을 조인할 수 있습니다. key1 매개 변수는 Join 연산자 왼쪽에 있는 컬렉션에서 가져와야 합니다. key2 매개 변수는 Join 연산자 오른쪽에 있는 컬렉션에서 가져와야 합니다.

조인 조건에 사용되는 키는 컬렉션에서 둘 이상의 항목을 포함하는 식일 수 있습니다. 그러나 각 키 식에는 해당 컬렉션의 항목만 포함될 수 있습니다.
expressionList 필수입니다. 컬렉션의 요소 그룹이 집계되는 방식을 식별하는 하나 이상의 식입니다. 그룹화된 결과의 멤버 이름을 식별하려면 Group 키워드(<alias> = Group)를 사용합니다. 그룹에 적용할 집계 함수를 포함할 수도 있습니다.

설명

Group Join 절은 조인되는 컬렉션의 일치하는 키 값을 기반으로 두 컬렉션을 조인합니다. 결과 컬렉션에는 첫 번째 컬렉션의 키 값과 일치하는 두 번째 컬렉션의 요소 컬렉션을 참조하는 멤버가 포함될 수 있습니다. 두 번째 컬렉션의 그룹화된 요소에 적용할 집계 함수를 지정할 수도 있습니다. 집계 함수에 대한 자세한 내용은 Aggregate 절을 참조하세요.

예를 들어, 관리자 컬렉션과 직원 컬렉션을 생각해 보세요. 두 컬렉션의 요소에는 특정 관리자에게 보고하는 직원을 식별하는 ManagerID 속성이 있습니다. 조인 작업의 결과에는 ManagerID 값이 일치하는 각 관리자와 직원에 대한 결과가 포함됩니다. Group Join 작업의 결과에는 전체 관리자 목록이 포함됩니다. 각 관리자 결과에는 특정 관리자와 일치하는 직원 목록을 참조하는 멤버가 있습니다.

Group Join 작업의 결과 컬렉션에는 From 절에서 식별된 컬렉션 값과 Group Join 절의 Into 절에서 식별된 식의 모든 조합이 포함될 수 있습니다. Into 절의 유효한 식에 대한 자세한 내용은 Aggregate 절을 참조하세요.

Group Join 연산은 Group Join 연산자의 왼쪽에서 식별된 컬렉션의 모든 결과를 반환합니다. 이는 참여하는 컬렉션에 일치하는 항목이 없는 경우에도 마찬가지입니다. 이는 SQL의 LEFT OUTER JOIN과 같습니다.

Join 절을 사용하여 컬렉션을 단일 컬렉션으로 결합할 수 있습니다. 이는 SQL의 INNER JOIN과 동등합니다.

예시

다음 코드 예에서는 Group Join 절을 사용하여 두 컬렉션을 조인합니다.

Dim customerList = From cust In customers
                   Group Join ord In orders On
                   cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        OrderTotal = Sum(ord.Total)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, OrderTotal

For Each customer In customerList
    Console.WriteLine(customer.CompanyName &
                      " (" & customer.OrderTotal & ")")

    For Each order In customer.CustomerOrders
        Console.WriteLine(vbTab & order.OrderID & ": " & order.Total)
    Next
Next

참고 항목