グループに参加して LINQ に参加する
LINQ の Join()
と GroupJoin()
は、一致するキーに基づいて複数のコレクションを結合することでデータをクエリするための強力な演算子です。 LINQ を効果的かつ効率的に使用するには、これらの違いを理解することが重要です。
動作の違い
Join()
: 両方のコレクションの一致する要素をペアにするフラット化された結果セットを生成します。 GroupJoin()
: グループのコレクションを生成します。各グループには、最初のコレクションの要素と 2 番目のコレクションの関連要素のコレクションが含まれます。 これを説明するために、それぞれ親 ID と子の値を持つ 2 つの親オブジェクトと子オブジェクトのコレクションを考えてみましょう。
Join()
例
<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>
結果:
<code>Value ChildValue A a1 A a2 A a3 B b1 B b2</code>
GroupJoin()
例
<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>
結果:
<code>Value Children A [a1, a2, a3] B [b1, b2] C []</code>
文法
Join()
: from <范围变量> in <第一个集合> join <范围变量> in <第二个集合> on <条件> select <结果>
GroupJoin()
: from <范围变量> in <第一个集合> join <范围变量> in <第二个集合> on <条件> into <集合名称> select <结果>
使用シナリオ
外部結合: グループをフラット化することで、GroupJoin()
はフラット化された外部結合を簡単に生成できます。
順序の保持: GroupJoin()
は、コレクションを連結するときに要素の順序を維持するために使用できます。たとえば、目的の順序を表す ID のコレクションがある場合、GroupJoin()
を使用して、その ID を最初のコレクションとしてその順序で結果を取得できます。
概要
Join()
はフラット化された結果を生成しますが、GroupJoin()
はグループのコレクションを返します。 GroupJoin()
は、外部結合や順序の維持が含まれるシナリオで特に役立ちます。 Join()
と GroupJoin()
はどちらも複雑な LINQ クエリで重要な役割を果たし、開発者が複数のデータ ソースからデータを効率的に操作および集約できるようにします。
以上がJoin() の代わりに LINQ の GroupJoin() を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。