Group Join, clause (Visual Basic)
Combine deux collections en une collection hiérarchique unique. L’opération de jointure est basée sur des clés correspondantes.
Syntaxe
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Éléments
Terme | Définition |
---|---|
element |
Obligatoire. La variable de contrôle pour la collection en cours de jointure. |
type |
Optionnel. Type d'élément element . Si aucun type n’est spécifié, le type de element est inféré de collection . |
collection |
Obligatoire. La collection à combiner avec la collection qui se trouve sur le côté gauche de l’opérateur Group Join . Une clause Group Join peut être imbriquée dans une clause Join ou dans une autre clause Group Join . |
key1 Equals key2 |
Obligatoire. Identifie les clés pour les collections en cours de jointure. Vous devez utiliser l’opérateur Equals pour comparer les clés des collections en cours de jointure. Vous pouvez combiner des conditions de jointure à l’aide de l’opérateur And pour identifier plusieurs clés. Le paramètre key1 doit provenir de la collection sur le côté gauche de l’opérateur Join . Le paramètre key2 doit provenir de la collection sur le côté droit de l’opérateur Join .Les clés utilisées dans la condition de jointure peuvent être des expressions qui incluent plus d’un élément de la collection. Toutefois, chaque expression clé ne peut contenir que des éléments de sa collection respective. |
expressionList |
Obligatoire. Une ou plusieurs expressions qui identifient la façon dont les groupes d’éléments de la collection sont agrégés. Pour identifier un nom de membre pour les résultats groupés, utilisez le mot clé Group (<alias> = Group ). Vous pouvez aussi inclure des fonctions d’agrégation à appliquer au groupe. |
Notes
La clause Group Join
combine deux collections en fonction des valeurs de clé correspondantes des collections en cours de jointure. La collection résultante peut contenir un membre qui fait référence à une collection d’éléments de la deuxième collection qui correspondent à la valeur de clé de la première collection. Vous pouvez également spécifier des fonctions d’agrégation à appliquer aux éléments groupés de la deuxième collection. Pour obtenir des informations sur les fonctions d’agrégation, consultez Aggregate, clause.
Prenons, par exemple, une collection de managers et une collection d’employés. Les éléments des deux collections ont une propriété ManagerID qui identifie les employés qui relèvent d’un manager particulier. Les résultats d’une opération de jointure contiennent un résultat pour chaque manager et employé avec une valeur ManagerID correspondante. Les résultats d’une opération Group Join
devraient contenir la liste complète des managers. Chaque résultat du manager aurait un membre qui a référencé la liste des employés qui étaient une correspondance pour le manager spécifique.
La collection résultant d’une opération Group Join
peut contenir n’importe quelle combinaison de valeurs de la collection identifiée dans la clause From
et les expressions identifiées dans la clause Into
de la clause Group Join
. Pour plus d’informations sur les expressions valides pour la clause Into
, consultez Aggregate, clause.
Une opération Group Join
retourne tous les résultats de la collection identifiée sur le côté gauche de l’opérateur Group Join
. Cela est vrai même s’il n’y a aucune correspondance dans la collection en cours de jointure. On peut comparer cela à un LEFT OUTER JOIN
dans SQL.
Vous pouvez utiliser la clause Join
pour combiner des collections en une seule collection. Cela est équivalent à un INNER JOIN
dans SQL.
Exemple
L’exemple de code suivant joint deux collections à l’aide de la clause Group Join
.
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