Rejoignez un groupe et rejoignez LINQ
LINQ Join()
et GroupJoin()
sont des opérateurs puissants pour interroger des données en joignant plusieurs collections en fonction de clés correspondantes. Comprendre les différences entre eux est essentiel pour utiliser LINQ de manière efficace et efficiente.
Différences de comportement
Join()
: génère un ensemble de résultats aplatis qui associe les éléments correspondants des deux collections. GroupJoin()
: génère une collection de groupes, où chaque groupe contient un élément de la première collection et une collection d'éléments associés de la deuxième collection. Pour illustrer cela, considérons une collection de deux objets parent et enfant, avec respectivement les identifiants parent et les valeurs enfants.
Join()
Exemple
<code class="language-csharp">from p in Parent join c in Child on p.Id equals c.Id select new { p.Value, c.ChildValue };</code>
Résultat :
<code>Value ChildValue A a1 A a2 A a3 B b1 B b2</code>
GroupJoin()
Exemple
<code class="language-csharp">from p in Parent join c in Child on p.Id equals c.Id into g select new { p.Value, Children = g };</code>
Résultat :
<code>Value Children A [a1, a2, a3] B [b1, b2] C []</code>
Grammaire
Join()
: from <范围变量> in <第一个集合> join <范围变量> in <第二个集合> on <条件> select <结果>
GroupJoin()
: from <范围变量> in <第一个集合> join <范围变量> in <第二个集合> on <条件> into <集合名称> select <结果>
Scénarios d'utilisation
Jointures externes : En aplatissant les groupes, GroupJoin()
peut facilement générer des jointures externes aplaties.
Préserver l'ordre : GroupJoin()
peut être utilisé pour conserver l'ordre des éléments lors de la concaténation de collections. Par exemple, si vous disposez d'une collection d'identifiants qui représente un ordre souhaité, vous pouvez utiliser GroupJoin()
pour récupérer les résultats dans cet ordre avec l'ID comme première collection.
Résumé
Join()
produit des résultats aplatis, tandis que GroupJoin()
renvoie une collection de groupes. GroupJoin()
est particulièrement utile dans les scénarios impliquant des jointures externes ou le maintien de l'ordre. Join()
et GroupJoin()
jouent tous deux un rôle essentiel dans les requêtes LINQ complexes, permettant aux développeurs de manipuler et d'agréger efficacement les données provenant de plusieurs sources de données.
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!