Group Join-Klausel (Visual Basic)

Fasst zwei Auflistungen zu einer einzelnen hierarchischen Auflistung zusammen. Der Joinvorgang basiert auf übereinstimmenden Schlüsseln.

Syntax

Group Join element [As type] In collection _  
  On key1 Equals key2 [ And key3 Equals key4 [... ] ] _  
  Into expressionList  

Bestandteile

Begriff Definition
element Erforderlich. Die Steuerungsvariable für die Sammlung, die verknüpft wird.
type Optional. Der element-Typ. Wenn kein type angegeben ist, wird der Typ von element aus der collection abgeleitet.
collection Erforderlich. Die Sammlung, die mit der Sammlung kombiniert werden soll, die auf der linken Seite des Group Join-Operators identifiziert wird. Eine Group Join-Klausel kann in einer anderen Join-Klausel oder in einer Group Join-Klausel geschachtelt werden.
key1 Equals key2 Erforderlich. Identifiziert Schlüssel für die Sammlungen, die verknüpft werden. Sie müssen den Equals-Operator verwenden, um Schlüssel aus den Sammlungen zu vergleichen, die verknüpft werden sollen. Sie können Join-Bedingungen kombinieren, indem Sie den And-Operator verwenden, um mehrere Schlüssel zu identifizieren. Das Parameter key1 muss aus der Sammlung auf der linken Seite des Join-Operators stammen. Das Parameter key2 muss aus der Sammlung auf der rechten Seite des Join-Operators stammen.

Die in der Join-Bedingung verwendeten Schlüssel können Ausdrücke sein, die mehrere Elemente aus der Sammlung enthalten. Jeder Schlüsselausdruck kann jedoch nur Elemente aus seiner jeweiligen Sammlung enthalten.
expressionList Erforderlich. Ein oder mehrere Ausdrücke, die angeben, wie die Gruppen von Elementen aus der Sammlung aggregiert werden. Um einen Mitgliedsnamen für die gruppierten Ergebnisse anzugeben, verwenden Sie das Schlüsselwort Group (<alias> = Group). Sie können auch Aggregatfunktionen einschließen, die auf die Gruppe angewendet werden sollen.

Bemerkungen

Die Group Join-Klausel kombiniert zwei Sammlungen basierend auf übereinstimmenden Schlüsselwerten aus den Sammlungen, die verknüpft werden. Die resultierende Auflistung kann einen Member enthalten, der auf eine Auflistung von Elementen aus der zweiten Auflistung verweist, die mit dem Schlüsselwert aus der ersten Auflistung übereinstimmen. Sie können auch Aggregatfunktionen angeben, die auf die gruppierten Elemente aus der zweiten Auflistung angewendet werden sollen. Weitere Informationen zu Aggregatfunktionen finden Sie unter Aggregate-Klausel.

Betrachten Sie beispielsweise eine Sammlung von Vorgesetzten und eine Sammlung von Mitarbeitern. Elemente aus beiden Auflistungen verfügen über eine ManagerID-Eigenschaft, die die Mitarbeiter identifiziert, die einem bestimmten Vorgesetzten berichtigen. Die Ergebnisse eines Joinvorgangs enthalten ein Ergebnis für jeden Vorgesetzten und Mitarbeiter mit einem entsprechenden ManagerID-Wert. Die Ergebnisse eines Vorgangs Group Join enthalten die vollständige Liste der Manager. Jedes Vorgesetzteergebnis hätte ein Mitglied, das auf die Liste der Mitarbeiter verweist, die eine Übereinstimmung mit dem jeweiligen Vorgesetzten darstellten.

Die Auflistung, die sich aus einem Group Join-Vorgang ergibt, kann eine beliebige Kombination von Werten aus der in der From-Klausel identifizierten Auflistung und den in der Into-Klausel der Group Join-Klausel identifizierten Ausdrücken enthalten. Weitere Informationen zu gültigen Ausdrücken für die Into-Klausel finden Sie unter Aggregatklausel.

Ein Group Join-Vorgang gibt alle Ergebnisse aus der Auflistung zurück, die auf der linken Seite des Group Join-Operators identifiziert wurde. Dies gilt auch dann, wenn in der verknüpften Sammlung keine Übereinstimmungen vorhanden sind. Dies ist wie ein LEFT OUTER JOIN in SQL.

Sie können die Join-Klausel verwenden, um Sammlungen in einer einzelnen Sammlung zu kombinieren. Diese entspricht einem INNER JOIN in SQL.

Beispiel

Im folgenden Codebeispiel werden zwei Sammlungen mithilfe der Group Join-Klausel verknüpft.

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

Weitere Informationen