Maison > développement back-end > C++ > Comment effectuer des jointures multi-champs dans une seule requête LINQ ?

Comment effectuer des jointures multi-champs dans une seule requête LINQ ?

Susan Sarandon
Libérer: 2025-01-24 02:19:10
original
1084 Les gens l'ont consulté

How to Perform Multi-Field Joins in a Single LINQ Query?

Connexion multi-champs LINQ : associez efficacement plusieurs entités

Dans LINQ, la connexion de plusieurs entités utilise généralement le mot-clé join. Bien que les jointures à champ unique soient plus courantes, les jointures à champs multiples peuvent être facilement mises en œuvre grâce à de simples ajustements de syntaxe.

Syntaxe de jointure multi-champs

La syntaxe pour joindre plusieurs champs dans une seule requête LINQ est la suivante :

from x in entity
join y in entity2 
   on new { x.field1, x.field2 } equals new { y.field1, y.field2 }
Copier après la connexion
Le mot-clé

new crée un type anonyme qui combine les champs de deux entités utilisées pour la jointure. Le type anonyme à gauche du signe égal représente la condition de connexion de la première entité et le côté droit représente la condition de connexion de la deuxième entité.

Exemple

Voici un exemple :

var result = from x in entity
   join y in entity2 
   on new { x.field1, x.field2 } equals new { y.field1, y.field2 }
Copier après la connexion

Cette requête joindra field1 et field2 en fonction des champs entity et entity2, renvoyant une séquence combinée contenant des enregistrements correspondant aux champs spécifiés dans les deux entités.

Autres notes

Il est à noter que les types de données des champs de connexion doivent être compatibles. De plus, le mot-clé join effectue une jointure interne, ce qui signifie que seuls les enregistrements dont les valeurs de champ correspondent seront renvoyés.

Si vous devez effectuer une jointure externe gauche, vous pouvez utiliser l'opérateur GroupJoin. Par exemple :

var result = from x in entity
   join y in entity2 
   on new { x.field1, x.field2 } equals new { y.field1, y.field2 } into yGroup
   from y in yGroup.DefaultIfEmpty()
Copier après la connexion

Cette requête effectuera une jointure externe gauche, garantissant que tous les enregistrements de la table entity sont renvoyés, même s'il n'y a aucun enregistrement correspondant dans la table entity2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal