다음을 통해 공유


그룹 조인 절(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 절은 절 또는 다른 Group Join 절에 중첩 Join 될 수 있습니다.
key1 Equals key2 필수 사항입니다. 조인되는 컬렉션의 키를 식별합니다. 연산자를 Equals 사용하여 조인 중인 컬렉션의 키를 비교해야 합니다. 연산자를 사용하여 여러 키를 식별하여 조인 And 조건을 결합할 수 있습니다. 매개 변수는 key1 연산자의 왼쪽에 있는 컬렉션에 Join 있어야 합니다. 매개 변수는 key2 연산자의 오른쪽에 있는 컬렉션에 Join 있어야 합니다.

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

비고

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

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

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

연산자는 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

참고하십시오