Share via


Group Join Clause (Visual Basic)

Hiermee worden twee verzamelingen gecombineerd tot één hiërarchische verzameling. De join-bewerking is gebaseerd op overeenkomende sleutels.

Syntaxis

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

generator

Term Definitie
element Vereist. De besturingsvariabele voor de verzameling die wordt toegevoegd.
type Optioneel. Het type element. Als er geen type is opgegeven, wordt het type element afgeleid van collection.
collection Vereist. De verzameling die moet worden gecombineerd met de verzameling aan de linkerkant van de Group Join operator. Een Group Join component kan worden genest in een Join component of in een andere Group Join component.
key1 Equals key2 Vereist. Identificeert sleutels voor de verzamelingen die worden gekoppeld. U moet de Equals operator gebruiken om sleutels te vergelijken van de verzamelingen die worden gekoppeld. U kunt joinvoorwaarden combineren met behulp van de And operator om meerdere sleutels te identificeren. De key1 parameter moet afkomstig zijn uit de verzameling aan de linkerkant van de Join operator. De key2 parameter moet afkomstig zijn uit de verzameling aan de rechterkant van de Join operator.

De sleutels die in de joinvoorwaarde worden gebruikt, kunnen expressies zijn die meer dan één item uit de verzameling bevatten. Elke sleutelexpressie kan echter alleen items uit de respectieve verzameling bevatten.
expressionList Vereist. Een of meer expressies die bepalen hoe de groepen elementen uit de verzameling worden samengevoegd. Als u een lidnaam voor de gegroepeerde resultaten wilt identificeren, gebruikt u het Group trefwoord (<alias> = Group). U kunt ook statistische functies opnemen die op de groep moeten worden toegepast.

Opmerkingen

De Group Join component combineert twee verzamelingen op basis van overeenkomende sleutelwaarden van de verzamelingen die worden gekoppeld. De resulterende verzameling kan een lid bevatten dat verwijst naar een verzameling elementen uit de tweede verzameling die overeenkomt met de sleutelwaarde uit de eerste verzameling. U kunt ook statistische functies opgeven die moeten worden toegepast op de gegroepeerde elementen uit de tweede verzameling. Zie Aggregaatcomponent voor meer informatie over statistische functies.

Denk bijvoorbeeld aan een verzameling managers en een verzameling werknemers. Elementen van beide verzamelingen hebben een eigenschap ManagerID waarmee de werknemers worden geïdentificeerd die rapporteren aan een bepaalde manager. De resultaten van een join-bewerking bevatten een resultaat voor elke manager en werknemer met een overeenkomende ManagerID-waarde. De resultaten van een Group Join bewerking bevatten de volledige lijst met managers. Elk managerresultaat zou een lid hebben dat verwijst naar de lijst met werknemers die overeenkomen met de specifieke manager.

De verzameling die het resultaat is van een Group Join bewerking kan elke combinatie van waarden uit de verzameling bevatten die in de From component is geïdentificeerd en de expressies die zijn geïdentificeerd in de Into component van de Group Join component. Zie Aggregate Clause voor meer informatie over geldige expressies voor de Into component.

Een Group Join bewerking retourneert alle resultaten uit de verzameling die aan de linkerkant van de Group Join operator is geïdentificeerd. Dit geldt zelfs als er geen overeenkomsten zijn in de verzameling die wordt toegevoegd. Dit is als een LEFT OUTER JOIN in SQL.

U kunt de Join component gebruiken om verzamelingen te combineren tot één verzameling. Dit komt overeen met een INNER JOIN in SQL.

Opmerking

In het volgende codevoorbeeld worden twee verzamelingen samengevoegd met behulp van de Group Join component.

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

Zie ook