Поделиться через


Предложение 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 (Visual Basic).

Рассмотрим, например, коллекцию руководителей и коллекцию сотрудников. Элементы из обеих коллекций имеют свойство ManagerID, определяющее сотрудников, подотчетных конкретному руководителю. Результаты операции соединения будут содержать результат для каждого руководителя и сотрудника с совпадением по значению ManagerID. Результаты операции Group Join будут содержать полный список руководителей. Результат для каждого руководителя будет иметь член, ссылающийся на список соответствующих ему сотрудников.

Получаемая коллекция после операции Group Join может содержать любую комбинацию значений из коллекции, определенной в предложении From, и выражений, указанных в предложении Into предложения Group Join. Дополнительные сведения о допустимых выражениях для предложения Into см. в разделе Предложение Aggregate (Visual Basic).

Операция Group Join возвратит все результаты из коллекции, определенной на левой стороне оператора Group Join. Это верно, даже если не найдено совпадений в присоединяемой коллекции. Это похоже на LEFT OUTER JOIN в SQL.

Можно использовать предложение Join для объединения коллекций в одну коллекцию. Это эквивалентно INNER JOIN в SQL.

Пример

В следующем примере кода две коллекции объединяются с помощью предложения 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

См. также

Ссылки

Предложение Select (Visual Basic)

Предложение From (Visual Basic)

Предложение Join (Visual Basic)

Предложение Where (Visual Basic)

Предложение Group By (Visual Basic)

Основные понятия

Знакомство с LINQ в Visual Basic

Другие ресурсы

Запросы (Visual Basic)