本文演示了一種使用 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
字段為空值的輸出中。
這種方法利用擴展方法的強大功能,在構建複雜的 LINQ 查詢時提供靈活性和可讀性。 它將強類型數據結構的優點與 LINQ 的優雅語法結合起來。
以上是如何使用LINQ擴展方法執行左外連接?的詳細內容。更多資訊請關注PHP中文網其他相關文章!