自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

EF Core 10 現(xiàn)已支持 LeftJoin 和 RightJoin 運算符查詢了!

開發(fā) 前端
本文咱們一起來看看在 EF Core 中使用 LeftJoin 和 RightJoin 運算符進行左右連接查詢的代碼簡潔度。

前言

最近發(fā)現(xiàn) EF Core 10 中的新增功能引入了在 LINQ 中支持 LeftJoin 和 RightJoin 運算符查詢的新功能。在 EF Core 10 之前,開發(fā)人員需要通過復雜的組合查詢實現(xiàn) LEFT JOIN 需要在特定配置中執(zhí)行SelectManyGroupJoin 和 DefaultIfEmpty 操作。

本文咱們一起來看看在 EF Core 中使用 LeftJoin 和 RightJoin 運算符進行左右連接查詢的代碼簡潔度。

環(huán)境準備

在此之前我們需要先安裝 .NET 10 開發(fā)環(huán)境。

圖片圖片

圖片圖片

需要安裝最新的 Visual Studio 2022 預覽版或者使用 Visual Studio Code 和 C# 開發(fā)工具包擴展或者使用 Rider 來配合 .NET 10 使用。

  • Visual Studio 2022 預覽版:https://visualstudio.microsoft.com/zh-hans/vs/preview
  • C# 開發(fā)工具包擴展:https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit

EF Core指定使用預發(fā)行版本

圖片圖片

指定項目目標框架

圖片圖片

GroupJoin + SelectMany + DefaultIfEmpty 實現(xiàn)左連接

實現(xiàn)原理:GroupJoin + SelectMany + DefaultIfEmpty 實現(xiàn)左連接。該模式包括在多個數(shù)據源之間創(chuàng)建 GroupJoin,然后通過對分組源使用 SelectMany 運算符與 DefaultIfEmpty 來平展分組,從而在內部不具有相關元素時匹配 null。

  • GroupJoin: 將兩個序列按關聯(lián)鍵進行分組連接,生成分組的嵌套結構。
  • SelectMany: 將嵌套集合(如集合的集合)展開為單一序列。
  • DefaultIfEmpty: 會生成一個 包含 null 的默認條目,確保左表記錄不被過濾。
var leftJoinQuery = from c in db.Classes
                                    join t in db.Teachers on c.TeacherID equals t.TeacherID into teacherGroup
                                    from t in teacherGroup.DefaultIfEmpty()
                                    select new
                                    {
                                        c,
                                        t
                                    };

                var leftJoinQuery2 = db.Classes
                    // 第一步:GroupJoin 創(chuàng)建分組關聯(lián)
                    .GroupJoin(
                    db.Teachers,
                    c => c.TeacherID,// 左表關聯(lián)鍵(Class 的 TeacherID)
                    t => t.TeacherID,// 右表關聯(lián)鍵(Teacher 的 TeacherID)
                    (c, teacherGroup) => new
                    {
                        Class = c,
                        Teachers = teacherGroup
                    })
                    // 第二步:SelectMany 展開分組并處理空值
                    .SelectMany(
                    temp => temp.Teachers.DefaultIfEmpty(),// 確保即使無關聯(lián)教師也保留 Class 班級信息
                    (temp, t) => new
                    {
                        temp.Class,
                        Teacher = t
                    });

LeftJoin 運算符查詢

var newLeftJoinQuery = db.Classes
                   .LeftJoin(db.Teachers,
                   c => c.TeacherID,
                   t => t.TeacherID,
                   (c, t) => new
                   {
                       Class = c,
                       Teacher = t
                   });

                Console.WriteLine("執(zhí)行SQL=>>> " + newLeftJoinQuery.ToQueryString());

RightJoin 運算符查詢

var newRightJoinQuery = db.Teachers
                    .RightJoin(db.Classes,
                    t => t.TeacherID,
                    c => c.TeacherID,
                    (t, c) => new
                    {
                        Teacher = t,
                        Class = c
                    });

                Console.WriteLine("執(zhí)行SQL=>>> " + newRightJoinQuery.ToQueryString());

參考文章

責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2009-06-21 13:48:05

ShellLinux運算符

2025-02-24 11:16:20

2009-08-11 15:51:08

C#運算符算術運算符

2024-02-26 15:17:20

2017-05-11 16:38:07

javascript邏輯運算符

2009-08-12 15:20:18

C#賦值運算符復合賦值運算符

2013-08-15 16:48:39

.Net基礎

2009-08-12 15:02:49

C#賦值運算符簡單賦值運算符

2023-04-10 08:58:13

C#關系運算符

2025-02-07 00:12:34

C#編程as

2009-11-18 09:02:55

PHP運算符

2020-12-10 08:11:52

typeof instanceofJS

2021-12-15 10:25:57

C++運算符重載

2025-01-24 08:32:00

運算符C#

2009-08-12 09:30:10

C#??運算符

2016-10-14 14:04:34

JAVA語法main

2009-11-26 11:12:07

PHP運算符

2009-08-12 14:49:33

C#移位運算符

2009-07-09 17:40:26

Java運算符

2009-12-08 10:00:36

PHP比較運算符
點贊
收藏

51CTO技術棧公眾號