エンティティへの LINQ: Join
と GroupJoin
LINQ to Entities には、リレーショナル データの取得用に 2 つのキー演算子 Join
と GroupJoin
が用意されています。 Join
は SQL の INNER JOIN
をミラーリングし、データセット間に 1 対 1 のマッピングを作成します。 逆に、GroupJoin
は OUTER JOIN と同様に、より完全な結果セットを提供します。
GroupJoin
: 詳細を見る
Join
とは異なり、GroupJoin
は一連の親要素を生成し、それぞれが関連する子要素のコレクションとペアになります。 これは、親子構造を維持することが不可欠な場合に非常に重要です。
いつ使用するか GroupJoin
GroupJoin
は、次のような状況で優れています。
フラット化された外部結合の生成: GroupJoin
と DefaultIfEmpty()
を組み合わせて、ネストされたグループを表形式に変換します。
要素の順序の保持: 順序付けされた親要素を含むシナリオ (ID のシーケンスに基づいて選択するなど) では、GroupJoin
はその順序を維持できます。
C# での実装
GroupJoin
の C# 構文は Join
とは異なります:
<code class="language-csharp">from p in Parent join c in Child on p.Id equals c.Id into g select new { Parent = p, Children = g }</code>
具体例
2 つのサンプル リストを調べてみましょう:
<code>Id Value 1 A 2 B 3 C Id ChildValue 1 a1 1 a2 1 a3 2 b1 2 b2</code>
Join
の使用:
<code>Value ChildValue A a1 A a2 A a3 B b1 B b2</code>
GroupJoin
の使用:
<code>Value ChildValues A [a1, a2, a3] B [b1, b2] C []</code>
以上がLINQ-to-Entities での Join と GroupJoin: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。