Maison >développement back-end >C++ >Comment effectuer des jointures externes gauche dans LINQ sans clauses «jointure-on-equals-in»?
join-on-equals-into
Dans C # linq aux objets, vous pouvez utiliser la méthode
. DefaultIfEmpty()
join-on-equals-into
Solution sur la connexion externe gauche
Pour utiliser la clause pour exécuter la connexion externe gauche, veuillez modifier le code comme suit:
Explication Where
<code class="language-csharp">List<joinpair> leftFinal = (from l in lefts join r in rights on l.Key equals r.Key into temp from r in temp.DefaultIfEmpty() select new JoinPair { LeftId = l.Id, RightId = r == null ? 0 : r.Id });</code>Si les conditions de connexion ne correspondent pas, renvoyez la valeur par défaut du type de collection connecté (
dans cet exemple). Cela garantit que toutes les lignes de la table de gauche () sont incluses dans les résultats, même s'il n'y a pas de ligne de correspondance dans la table droite ().
Exemple DefaultIfEmpty()
JoinPair
Considérant le code prévu pour la connexion interne: lefts
rights
clauses dans les suivantes:
Cette modification garantira que toutes les lignes de gauchesont incluses dans les résultats, y compris les lignes qui ne sont pas appariées dans la droite
.<code class="language-csharp">List<joinpair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key select new JoinPair { LeftId = l.Id, RightId = r.Id });</code>
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!