Dela via


Gruppkopplingssats (Visual Basic)

Kombinerar två samlingar till en enda hierarkisk samling. Kopplingsåtgärden baseras på matchande nycklar.

Syntax

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

Delar

Period Definition
element Obligatoriska. Kontrollvariabeln för samlingen som ansluts.
type Valfritt. Typen av element. Om nej type anges härleds typen av element från collection.
collection Obligatoriska. Samlingen som ska kombineras med samlingen som finns till vänster om operatorn Group Join . En Group Join sats kan kapslas i en Join sats eller i en annan Group Join sats.
key1 Equals key2 Obligatoriska. Identifierar nycklar för de samlingar som ansluts. Du måste använda operatorn Equals för att jämföra nycklar från de samlingar som är anslutna. Du kan kombinera kopplingsvillkor med hjälp av operatorn And för att identifiera flera nycklar. Parametern key1 måste vara från samlingen till vänster om operatorn Join . Parametern key2 måste vara från samlingen till höger om operatorn Join .

Nycklarna som används i kopplingsvillkoret kan vara uttryck som innehåller fler än ett objekt från samlingen. Varje nyckeluttryck kan dock bara innehålla objekt från respektive samling.
expressionList Obligatoriska. Ett eller flera uttryck som identifierar hur grupper av element från samlingen aggregeras. Om du vill identifiera ett medlemsnamn för de grupperade resultaten använder du nyckelordet Group (<alias> = Group). Du kan också inkludera aggregeringsfunktioner som ska tillämpas på gruppen.

Kommentarer

- Group Join satsen kombinerar två samlingar baserat på matchande nyckelvärden från samlingarna som kopplas. Den resulterande samlingen kan innehålla en medlem som refererar till en samling element från den andra samlingen som matchar nyckelvärdet från den första samlingen. Du kan också ange aggregeringsfunktioner som ska tillämpas på grupperade element från den andra samlingen. Information om aggregeringsfunktioner finns i Aggregeringssatsen.

Överväg till exempel en samling chefer och en samling anställda. Element från båda samlingarna har en ManagerID-egenskap som identifierar de anställda som rapporterar till en viss chef. Resultatet från en kopplingsåtgärd skulle innehålla ett resultat för varje chef och medarbetare med ett matchande ManagerID-värde. Resultatet från en Group Join åtgärd skulle innehålla den fullständiga listan över chefer. Varje chefsresultat skulle ha en medlem som refererade till listan över anställda som var en matchning för den specifika chefen.

Samlingen som är resultatet av en Group Join åtgärd kan innehålla valfri kombination av värden från samlingen som identifieras i From -satsen och de uttryck som identifieras i -satsen Group Join i Into -satsen. Mer information om giltiga uttryck för Into -satsen finns i Aggregerad sats.

En Group Join åtgärd returnerar alla resultat från samlingen som identifieras till vänster om operatorn Group Join . Detta gäller även om det inte finns några matchningar i samlingen som ansluts. Det här är som en LEFT OUTER JOIN i SQL.

Du kan använda Join -satsen för att kombinera samlingar till en enda samling. Detta motsvarar en INNER JOIN i SQL.

Exempel

I följande kodexempel kopplas två samlingar med hjälp Group Join av -satsen.

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

Se även