Share via


Comment : effectuer des opérations de jointure à l'aide de clés composites (Guide de programmation C#)

Mise à jour : novembre 2007

Cet exemple indique comment exécuter des opérations de jointure dans lesquelles vous souhaitez utiliser plusieurs clés pour définir une correspondance. Pour ce faire, vous devez utiliser une clé composite. Vous créez une clé composite comme un type anonyme ou nommé typé avec les valeurs que vous souhaitez comparer. Si la variable de requête doit être passée au-delà des limites de méthode, utilisez un type nommé qui substitue Equals et GetHashCode pour la clé. Les noms des propriétés et l'ordre dans lequel elles se produisent doit être identique dans chaque clé.

Exemple

L'exemple suivant montre comment utiliser une clé composite pour joindre des données de trois tables :

var query = from o in db.Orders
    from p in db.Products
    join d in db.OrderDetails 
        on new {o.OrderID, p.ProductID} equals new {d.OrderID,        d.ProductID} into details
        from d in details
        select new {o.OrderID, p.ProductID, d.UnitPrice};

L'inférence de type sur les clés composite dépend des noms des propriétés dans les clés et de l'ordre dans lequel elles se produisent. Si les propriétés dans les séquences sources n'ont pas les mêmes noms, vous devez assigner de nouveaux noms dans les clés. Par exemple, si la table Orders et la table OrderDetails utilisent chacune des noms différents pour leurs colonnes, vous pourriez créer des clés composites en assignant des noms identiques dans les types anonymes :

join...on new {Name = o.CustomerName, ID = o.CustID} equals 
    new {Name = d.CustName, ID = d.CustID }

Des clés composites peuvent également être utilisées dans une clause group.

Compilation du code

  • Pour compiler et exécuter ce code, effectuez la procédure suivante :

  • Ouvrez le LINQ to Northwind, exemple et suivez les instructions pour configurer le projet et créer la connexion de base de données.

  • Dans samples.cs, créez une nouvelle méthode vide qui accepte un paramètre d'entrée Northwind nommé db (similaire aux autres méthodes dans ce fichier). Collez le code de cet exemple dans le corps de méthode.

  • Modifiez program.cs pour appeler la nouvelle méthode à partir de Main.

  • Appuyez sur F5 pour compiler et exécuter la requête.

Voir aussi

Concepts

Expressions de requête LINQ (Guide de programmation C#)

Référence

join, clause (Référence C#)

group, clause (Référence C#)