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

Zobacz też