この記事では、LINQ 拡張メソッドを使用して左外部結合を実行するための簡潔で表現力豊かな方法を示し、他の結合手法とは異なる視点を提供します。 実際のアプリケーションに焦点を当て、代替アプローチと対比させていきます。
Foo
が Bar
と一致するテーブル Foo.Foo_Id
と Bar.Foo_Id
を結合することを検討してください。 拡張メソッドを使用して左外部結合を実現する方法は次のとおりです。
<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>
GroupJoin
拡張メソッドは、コア結合操作を実行し、指定されたキーに基づいて結果をグループ化します。 SelectMany
次に、グループ化された結果を平坦化し、結合されたレコードごとに匿名タイプを作成します。 重要なことは、DefaultIfEmpty()
は、Foo
レコードに一致する Bar
レコードがない場合を処理し、それらの Foo
レコードが Bar
フィールドの null 値とともに出力に含まれるようにすることです。
このアプローチでは、拡張メソッドの機能を利用して、複雑な LINQ クエリを構築する際の柔軟性と読みやすさを提供します。 これは、厳密に型指定されたデータ構造の利点と LINQ の洗練された構文を組み合わせたものです。
以上がLINQ 拡張メソッドを使用して左外部結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。