Group Join-Klausel (Visual Basic)
Aktualisiert: November 2007
Fasst zwei Auflistungen zu einer einzelnen hierarchischen Auflistung zusammen. Die Verknüpfungsoperation beruht auf übereinstimmenden Schlüsseln.
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Bestandteile
element
Erforderlich. Die Steuerelementvariable für die zu verknüpfende Auflistung.type
Optional. Der Typ von element. Wenn kein type angegeben ist, wird der Typ von element von collection abgeleitet.collection
Erforderlich. Die Auflistung, die mit der Auflistung auf der linken Seite des Group Join-Operators verknüpft werden soll. Eine Group Join-Klausel kann in einer Join-Klausel oder einer anderen Group Join-Klausel geschachtelt werden.key1Equalskey2
Erforderlich. Identifiziert Schlüssel für die zu verknüpfenden Auflistungen. Mit dem Equals-Operator müssen Sie Schlüssel der zu verknüpfenden Auflistungen vergleichen. Sie können Verknüpfungsbedingungen kombinieren, indem Sie mit dem And-Operator mehrere Schlüssel 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 der Auflistung enthalten. Jeder Schlüsselausdruck kann jedoch nur Elemente seiner zugehörigen Auflistung enthalten.
expressionList
Erforderlich. Mindestens ein Ausdruck, der identifiziert, wie die Gruppen der Elemente aus der Auflistung aggregiert werden. Verwenden Sie das Group-Schlüsselwort (<alias> = Group), um einen Membernamen für die gruppierten Ergebnisse zu identifizieren. Sie können auch Aggregatfunktionen auf die Gruppe anwenden.
Hinweise
Durch die Group Join-Klausel werden zwei Auflistungen auf Grundlage der übereinstimmenden Schlüsselwerte der zu verknüpfenden Auflistungen kombiniert. Die entstehende 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. Informationen über Aggregatfunktionen finden Sie unter Aggregate-Klausel (Visual Basic).
Betrachten Sie beispielsweise eine Auflistung von Managern und eine Auflistung von Mitarbeitern. Elemente aus beiden Auflistungen verfügen über eine ManagerID-Eigenschaft, die die Mitarbeiter identifiziert, die an einen bestimmten Manager berichten. Die Ergebnisse einer Verknüpfungsoperation würden ein Ergebnis für jeden Manager und Mitarbeiter mit übereinstimmendem ManagerID-Wert beinhalten. Zu den Ergebnissen einer Group Join-Operation würde die vollständige Liste der Manager gehören. Das Ergebnis für jeden Manager enthielte einen Member, der auf die Liste der Mitarbeiter verweist, die mit diesem Manager übereinstimmen.
Die Auflistung, die sich aus einem Group Join-Vorgang ergibt, kann jede Kombination von Werten der in der From-Klausel definierten Auflistung und den Ausdrücken, die in der Into-Klausel der Group Join-Klausel identifiziert werden, enthalten. Weitere Informationen zu gültigen Ausdrücken für die Into-Klausel finden Sie unter Aggregate-Klausel (Visual Basic).
Ein Group Join-Vorgang gibt alle Ergebnisse der identifizierten Auflistung auf der linken Seite des Group Join-Operators zurück. Dies gilt auch, wenn es in der zu verknüpfenden Auflistung keine Übereinstimmungen gibt. Dies entspricht einem LEFT OUTER JOIN in SQL.
Mit der Join-Klausel können Sie mehrere Auflistungen in einer einzelnen Auflistung kombinieren. Dies entspricht einem INNER JOIN in SQL.
Beispiel
Im folgenden Codebeispiel werden mit der Group Join-Klausel zwei Auflistungen miteinander 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
Konzepte
Einführung in LINQ in Visual Basic
Referenz
GROUP BY-Klausel (Visual Basic)