Group Join — Klauzula (Visual Basic)
Łączy dwie kolekcje w jedną hierarchiczną kolekcję. Operacja sprzężenia jest oparta na pasujących kluczach.
Składnia
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
generatora
Termin | Definicja |
---|---|
element |
Wymagany. Zmienna sterowa dla dołączanej kolekcji. |
type |
Opcjonalny. Typ .element Jeśli nie type zostanie określony, typ element jest wywnioskowany z collection . |
collection |
Wymagany. Kolekcja do połączenia z kolekcją, która znajduje się po lewej stronie Group Join operatora. Klauzulę Group Join można zagnieżdżać w klauzuli Join lub w innej Group Join klauzuli. |
key1 Equals key2 |
Wymagany. Identyfikuje klucze dla sprzężonych kolekcji. Aby porównać klucze ze sprzężonych kolekcji, należy użyć Equals operatora . Warunki sprzężenia można połączyć za pomocą operatora , And aby zidentyfikować wiele kluczy. Parametr key1 musi pochodzić z kolekcji po lewej stronie Join operatora. Parametr key2 musi pochodzić z kolekcji po prawej stronie Join operatora.Klucze używane w warunku sprzężenia mogą być wyrażeniami, które zawierają więcej niż jeden element z kolekcji. Jednak każde wyrażenie klucza może zawierać tylko elementy z odpowiedniej kolekcji. |
expressionList |
Wymagany. Co najmniej jedno wyrażenie identyfikujące sposób agregowania grup elementów z kolekcji. Aby zidentyfikować nazwę elementu członkowskiego dla pogrupowanych wyników, użyj słowa kluczowego Group (<alias> = Group ). Można również uwzględnić funkcje agregujące, które mają być stosowane do grupy. |
Uwagi
Klauzula Group Join
łączy dwie kolekcje w oparciu o pasujące wartości klucza z połączonych kolekcji. Wynikowa kolekcja może zawierać element członkowski, który odwołuje się do kolekcji elementów z drugiej kolekcji zgodnej z wartością klucza z pierwszej kolekcji. Można również określić funkcje agregujące, które mają być stosowane do grupowanych elementów z drugiej kolekcji. Aby uzyskać informacje na temat funkcji agregujących, zobacz Agregacja klauzuli.
Rozważmy na przykład kolekcję menedżerów i kolekcję pracowników. Elementy z obu kolekcji mają właściwość ManagerID, która identyfikuje pracowników raportujących do określonego menedżera. Wyniki operacji sprzężenia będą zawierać wynik dla każdego menedżera i pracownika z pasującą wartością ManagerID. Wyniki operacji Group Join
zawierają pełną listę menedżerów. Każdy wynik menedżera będzie miał członka, który odwołuje się do listy pracowników, które były zgodne dla określonego menedżera.
Kolekcja wynikająca z operacji może zawierać dowolną Group Join
kombinację wartości z kolekcji zidentyfikowanej w From
klauzuli i wyrażenia określone w Into
klauzuli klauzuli Group Join
. Aby uzyskać więcej informacji na temat prawidłowych wyrażeń dla klauzuli Into
, zobacz Agregacja klauzuli.
Group Join
Operacja zwróci wszystkie wyniki z kolekcji zidentyfikowanej po lewej stronie Group Join
operatora. Jest to prawdą, nawet jeśli w kolekcji nie ma żadnych dopasowań. Jest to jak LEFT OUTER JOIN
w języku SQL.
Możesz użyć klauzuli Join
, aby połączyć kolekcje w jedną kolekcję. Jest to odpowiednik elementu INNER JOIN
w języku SQL.
Przykład
Poniższy przykład kodu łączy dwie kolekcje przy użyciu klauzuli 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