Partager via


Group Join, clause (Visual Basic)

Combine deux collections en une seule collection hiérarchique. 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  

Pièces

Terme Définition
element Obligatoire. Variable de contrôle pour la collection jointe.
type Optionnel. Type de element. Si aucun n’est type spécifié, le type de element données est déduit de collection.
collection Obligatoire. Collection à combiner avec la collection qui se trouve sur le côté gauche de l’opérateur Group Join . Une Group Join clause peut être imbriquée dans une Join clause ou dans une autre Group Join clause.
key1 Equals key2 Obligatoire. Identifie les clés des collections jointes. Vous devez utiliser l’opérateur Equals pour comparer les clés des collections jointes. Vous pouvez combiner des conditions de jointure à l’aide de l’opérateur And pour identifier plusieurs clés. Le key1 paramètre doit provenir de la collection sur le côté gauche de l’opérateur Join . Le key2 paramètre 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 plusieurs éléments 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 Group mot clé (<alias> = Group). Vous pouvez également inclure des fonctions d’agrégation à appliquer au groupe.

Remarques

La Group Join clause combine deux collections en fonction des valeurs de clé correspondantes des collections jointes. 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 plus d’informations sur les fonctions d’agrégation, consultez Clause d’agrégation.

Prenons, par exemple, une collection de gestionnaires et une collection d’employés. Les éléments des deux collections ont une propriété ManagerID qui identifie les employés qui signalent à un responsable particulier. Les résultats d’une opération de jointure contiennent un résultat pour chaque responsable et employé avec une valeur ManagerID correspondante. Les résultats d’une Group Join opération contiennent la liste complète des gestionnaires. Chaque résultat du responsable aurait un membre qui a référencé la liste des employés qui étaient une correspondance pour le responsable spécifique.

La collection résultant d’une Group Join opération peut contenir n’importe quelle combinaison de valeurs de la collection identifiée dans la From clause et les expressions identifiées dans la Into clause de la Group Join clause. Pour plus d’informations sur les expressions valides pour la Into clause, consultez Clause d’agrégation.

Une Group Join opération 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 jointe. C’est comme dans LEFT OUTER JOIN SQL.

Vous pouvez utiliser la Join clause pour combiner des collections en une seule collection. Il s’agit d’un INNER JOIN équivalent dans SQL.

Exemple :

L’exemple de code suivant joint deux collections à l’aide de la Group Join clause.

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