Maison > développement back-end > C++ > Comment effectuer une jointure extérieure gauche dans LINQ sans utiliser de clauses de jointure sur l'équilibre?

Comment effectuer une jointure extérieure gauche dans LINQ sans utiliser de clauses de jointure sur l'équilibre?

DDD
Libérer: 2025-02-02 14:26:10
original
930 Les gens l'ont consulté

How to Perform a Left Outer Join in LINQ Without Using Join-On-Equals-Into Clauses?

c # linq join extérieur gauche: une approche alternative

Cet article montre comment effectuer une jointure extérieure gauche dans LINQ aux objets sans utiliser la clause traditionnelle join-on-equals-into. Nous tirons parti des opérateurs from et join en conjonction avec DefaultIfEmpty() pour une solution concise et efficace.

Voici la syntaxe alternative:

<code class="language-csharp">var q =
    from l in lefts
    join r in rights on l.Key equals r.Key into ps_jointable
    from p in ps_jointable.DefaultIfEmpty()
    select new JoinPair { LeftId = l.Id, RightId = p?.Id ?? 0 };</code>
Copier après la connexion

Cette requête LINQ exécute une jointure extérieure gauche sur les collections lefts et rights, générant une nouvelle collection d'objets JoinPair. Pour chaque élément de lefts, il tente de trouver un élément correspondant dans rights basé sur la propriété Key. Si une correspondance existe, RightId dans JoinPair tiendra le Id de l'élément de rights correspondant. Si aucune correspondance n'est trouvée, RightId par défaut est 0 en utilisant l'opérateur de conditionnement nulle (?.) et l'opérateur de coalescing null (??).

La méthode DefaultIfEmpty() est essentielle. Il garantit qu'un résultat est produit même lorsqu'aucune correspondance n'est trouvée dans la collection rights. En l'absence d'une correspondance, DefaultIfEmpty() renvoie une valeur par défaut (null dans ce cas), qui est ensuite gérée gracieusement par les opérateurs nulle-conditionnelle et nul coalscing. Cette approche fournit une alternative plus lisible et potentiellement plus performante à la syntaxe standard join-on-equals-into pour les jointures externes gauche dans linq.

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