Предложение Group Join (Visual Basic)
Обновлен: Ноябрь 2007
Объединяет две коллекции в одну иерархическую. Операция объединения основана на совпадении ключей.
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.key1Equalskey2
Обязательно. Определяет ключи для объединяемых коллекций. Необходимо использовать оператор Equals для сравнения ключей из соединяемых коллекции. Можно комбинировать условия соединения с помощью оператора And для идентификации нескольких ключей. Параметр key1 должен быть из коллекции, которая находится в левой части оператора Join. Параметр key2 должен быть из коллекции, которая находится в правой части оператора Join.Ключи, используемые в условии объединения, могут быть выражениями, включающими несколько элементов из коллекции. Однако каждое ключевое выражение может содержать только элементы из соответствующей ему коллекции.
expressionList
Обязательно. Одно или несколько выражений, определяющих способ создания групп элементов из коллекции. Для определения имени члена для сгруппированных результатов используйте ключевое слово Group (<alias> = Group). Можно также включить статистические функции, чтобы применить к группе.
Заметки
Предложение Group Join объединяет две коллекции, на основании совпадающих значений ключей из соединяемых коллекций. Результирующая коллекция может содержать член, который ссылается на коллекцию элементов из второй коллекции, соответствующих значению ключа из первой коллекции. Можно также указать статистические функции для применения к сгруппированным элементам из второй коллекции. Дополнительные сведения о статистических функциях см. в разделе Статистическое предложение (Visual Basic).
Рассмотрим, например, коллекцию руководителей и коллекцию сотрудников. Элементы из обеих коллекций имеют свойство ManagerID, определяющее сотрудников, подотчетных конкретному руководителю. Результаты операции соединения будут содержать результат для каждого руководителя и сотрудника с совпадением по значению ManagerID. Результаты операции Group Join будут содержать полный список руководителей. Результат для каждого руководителя будет иметь член, ссылающийся на список соответствующих ему сотрудников.
Получаемая коллекция после операции Group Join может содержать любую комбинацию значений из коллекции, определенной в предложении From, и выражений, указанных в предложении Into предложения Group Join. Дополнительные сведения о допустимых выражениях для предложения Into см. в разделе Статистическое предложение (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
См. также
Основные понятия
Знакомство с LINQ в Visual Basic
Ссылки
Предложение Select (Visual Basic)
Предложение Join (Visual Basic)
Предложение Where (Visual Basic)
Предложение Group By (Visual Basic)