Cet article démontre une méthode concise et expressive pour effectuer des jointures externes gauche en utilisant des méthodes d'extension LINQ, offrant une perspective différente par rapport aux autres techniques de jointure. Nous nous concentrerons sur l'application pratique, en le contrastant avec des approches alternatives.
Envisagez de rejoindre les tables Foo
et Bar
où Foo.Foo_Id
correspond à Bar.Foo_Id
. Voici comment réaliser une jointure extérieure gauche à l'aide de méthodes d'extension:
<code class="language-csharp">var qry = Foo.GroupJoin( Bar, foo => foo.Foo_Id, bar => bar.Foo_Id, (x, y) => new { Foo = x, Bars = y }) .SelectMany( x => x.Bars.DefaultIfEmpty(), (x, y) => new { Foo = x.Foo, Bar = y });</code>
La méthode d'extension GroupJoin
effectue l'opération de jointure de base, regroupant les résultats basés sur les clés spécifiées. SelectMany
aplatit ensuite les résultats groupés, créant un type anonyme pour chaque enregistrement rejoint. Surtout, DefaultIfEmpty()
gère les cas où un enregistrement Foo
n'a pas un enregistrement de correspondance Bar
, garantissant que ces enregistrements Foo
sont inclus dans la sortie avec des valeurs nuls pour les champs Bar
.
Cette approche, tirant parti de la puissance des méthodes d'extension, offre une flexibilité et une lisibilité lors de la construction de requêtes LINQ complexes. Il combine les avantages des structures de données fortement typées avec la syntaxe élégante de 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!