Freigeben über


Gruppenbeitrittsklausel (Visual Basic)

Kombiniert zwei Auflistungen in einer einzigen hierarchischen Auflistung. Der Verknüpfungsvorgang 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 Steuerelementvariable für die Auflistung, die verknüpft wird.
type Wahlfrei. Der element-Typ. Wenn kein type Wert angegeben ist, wird der Typ von elementcollection.
collection Erforderlich. Die Auflistung, die mit der Auflistung kombiniert werden soll, die sich auf der linken Seite des Group Join Operators befindet. Eine Group Join Klausel kann in einer Klausel oder in einer Join anderen Group Join Klausel geschachtelt werden.
key1 Equals key2 Erforderlich. Identifiziert Schlüssel für die Auflistungen, die verknüpft werden. Sie müssen den Equals Operator verwenden, um Schlüssel aus den auflistungen zu vergleichen, die verknüpft werden. Sie können Verknüpfungsbedingungen kombinieren, indem Sie den And Operator verwenden, um mehrere Schlüssel zu identifizieren. Der key1 Parameter muss von der Auflistung auf der linken Seite des Join Operators stammen. Der key2 Parameter muss von der Auflistung auf der rechten Seite des Join Operators stammen.

Die in der Verknüpfungsbedingung verwendeten Schlüssel können Ausdrücke sein, die mehrere Elemente aus der Auflistung enthalten. Jeder Schlüsselausdruck kann jedoch nur Elemente aus der jeweiligen Auflistung enthalten.
expressionList Erforderlich. Mindestens ein Ausdruck, der angibt, wie die Gruppen von Elementen aus der Auflistung aggregiert werden. Um einen Mitgliedsnamen für die gruppierten Ergebnisse zu identifizieren, verwenden Sie das Group Schlüsselwort (<alias> = Group). Sie können auch Aggregatfunktionen einschließen, die auf die Gruppe angewendet werden sollen.

Bemerkungen

Die Group Join Klausel kombiniert zwei Auflistungen basierend auf übereinstimmenden Schlüsselwerten aus den Auflistungen, die verknüpft werden. Die resultierende Auflistung kann ein Element enthalten, das auf eine Auflistung von Elementen aus der zweiten Auflistung verweist, die dem Schlüsselwert aus der ersten Auflistung entsprechen. Sie können auch Aggregatfunktionen angeben, die auf die gruppierten Elemente aus der zweiten Auflistung angewendet werden sollen. Informationen zu Aggregatfunktionen finden Sie unter "Aggregatklausel".

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

Die auflistung, die sich aus einem Group Join Vorgang ergibt, kann eine beliebige Kombination von Werten aus der auflistung enthalten, die in der From Klausel angegeben ist, und die in der IntoGroup Join Klausel angegebenen Ausdrücke. Weitere Informationen zu gültigen Ausdrücken für die Into Klausel finden Sie unter "Aggregate Clause".

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 Auflistung keine Übereinstimmungen vorhanden sind. Dies ist wie eine LEFT OUTER JOIN in SQL.

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

Beispiel

Im folgenden Codebeispiel werden zwei Auflistungen 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

Siehe auch