Group Join, clause (Visual Basic)
Mise à jour : novembre 2007
Regroupe deux collections en une collection hiérarchique unique. L'opération de jointure est basée sur des clés correspondantes.
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Éléments
element
Obligatoire. Variable de contrôle pour la collection qui est jointe.type
Facultatif. Type d'element. Si aucun type n'est spécifié, le type d'element est déduit de collection.collection
Obligatoire. Collection à combiner à 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.key1Equalskey2
Obligatoire. Identifie les clés des collections qui sont jointes. Vous devez utiliser l'opérateur Equals pour comparer les clés des collections qui sont jointes. Vous pouvez associer des conditions de jointure à l'aide de l'opérateur And afin d'identifier plusieurs clés. Le paramètre key1 doit provenir de la collection située du côté gauche de l'opérateur Join. Le paramètre key2 doit provenir de la collection située du côté droit de l'opérateur Join.Les clés utilisées dans la condition de jointure peuvent être des expressions incluant plusieurs éléments de la collection. Toutefois, chaque expression clé peut contenir uniquement des éléments de sa collection respective.
expressionList
Obligatoire. Une ou plusieurs expressions qui identifient comment 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 également inclure des fonctions d'agrégation à appliquer au groupe.
Notes
La clause Group Join associe deux collections en fonctions des valeurs de clés correspondantes des collections qui sont jointes. La collection résultante peut contenir un membre référençant 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 plus d'informations sur les fonctions d'agrégation, consultez Aggregate, clause (Visual Basic).
Prenons l'exemple d'une collection de gestionnaires et d'une collection d'employés. Les éléments des deux collections ont une propriété ManagerID qui identifie les employés qui se rapportent à un gestionnaire particulier. Les résultats d'une opération de jointure contiendraient un résultat pour chaque gestionnaire et employé possédant une valeur ManagerID correspondante. Les résultats d'une opération Group Join contiendraient la liste complète de gestionnaires. Chaque résultat de gestionnaire aurait un membre ayant référencé la liste des employés correspondant au gestionnaire spécifique.
La collection qui résulte d'une opération Group Join peut contenir toute 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 (Visual Basic).
Une opération Group Join retournera 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 en l'absence de correspondances dans la collection qui est jointe. Cela équivaut à LEFT OUTER JOIN dans SQL.
Vous pouvez utiliser la clause Join pour associer des collections dans une collection unique. Cela équivaut à 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
Voir aussi
Concepts
Introduction à LINQ dans Visual Basic
Référence
Group By, clause (Visual Basic)