Предложение 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
объединяет две коллекции на основе сопоставления ключевых значений из присоединенных коллекций. Результирующая коллекция может содержать элемент, ссылающийся на коллекцию элементов из второй коллекции, которая соответствует значению ключа из первой коллекции. Можно также указать агрегатные функции для применения к сгруппированным элементам из второй коллекции. Сведения о агрегатных функциях см. в предложении "Агрегат".
Рассмотрим, например, коллекцию руководителей и коллекцию сотрудников. Элементы из обеих коллекций имеют свойство ManagerID, определяющее сотрудников, которые сообщают конкретному руководителю. Результаты операции соединения будут содержать результат для каждого руководителя и сотрудника с соответствующим значением ManagerID. Результаты операции содержат полный Group Join
список руководителей. Каждый результат менеджера будет иметь член, ссылающийся на список сотрудников, которые были совпадением для конкретного руководителя.
Коллекция, полученная из Group Join
операции, может содержать любое сочетание значений из коллекции, определенной в From
предложении, и выражений, определенных в Into
предложении Group Join
предложения. Дополнительные сведения о допустимых выражениях предложения Into
см. в разделе "Агрегатное предложение".
Операция 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