Maison > développement back-end > C++ > Comment implémenter une jointure externe gauche avec plusieurs conditions de jointure dans LINQ to SQL ?

Comment implémenter une jointure externe gauche avec plusieurs conditions de jointure dans LINQ to SQL ?

Mary-Kate Olsen
Libérer: 2024-12-31 22:16:17
original
535 Les gens l'ont consulté

How to Implement a Left Outer Join with Multiple Join Conditions in LINQ to SQL?

LINQ to SQL : implémentation d'une jointure externe gauche avec plusieurs conditions de jointure

LINQ to SQL permet la création de requêtes complexes à l'aide d'un C# syntaxe. Une tâche courante consiste à implémenter une jointure externe gauche avec plusieurs conditions de jointure.

Pour comprendre la nécessité d'inclure la condition de jointure dans l'instruction JOIN plutôt que dans la clause WHERE, considérez l'instruction SQL suivante :

SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
Copier après la connexion

Ici, même si la table de faits (f) ne comporte aucune ligne correspondant à une certaine période, nous voulons quand même que cette période soit incluse dans les résultats. Placer la condition de jointure supplémentaire dans la clause WHERE omettrait ces points des résultats.

La solution LINQ to SQL implique l'utilisation de la syntaxe de la méthode d'extension. L'extrait de code suivant montre comment :

from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty()
where p.companyid == 100
select f.value
Copier après la connexion

Vous pouvez également utiliser une sous-requête :

from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in (from f in fg
             where f.otherid == 17
             select f).DefaultIfEmpty()
where p.companyid == 100
select f.value
Copier après la connexion

En plaçant la condition de jointure dans l'instruction JOIN, nous garantissons que seules les périodes avec un Les faits correspondants satisfaisant la condition otherid = 17 sont inclus dans les résultats, tout en effectuant une jointure externe gauche. Cette approche nous permet d'obtenir le comportement souhaité sans sacrifier les avantages de la jointure externe gauche.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal