偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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ā)人員需要通過復(fù)雜的組合查詢實現(xiàn) LEFT JOIN 需要在特定配置中執(zhí)行SelectManyGroupJoin 和 DefaultIfEmpty 操作。

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

環(huán)境準(zhǔn)備

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

圖片圖片

圖片圖片

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

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

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

圖片圖片

指定項目目標(biāo)框架

圖片圖片

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

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

  • GroupJoin: 將兩個序列按關(guān)聯(lián)鍵進行分組連接,生成分組的嵌套結(jié)構(gòu)。
  • 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)建分組關(guān)聯(lián)
                    .GroupJoin(
                    db.Teachers,
                    c => c.TeacherID,// 左表關(guān)聯(lián)鍵(Class 的 TeacherID)
                    t => t.TeacherID,// 右表關(guān)聯(lián)鍵(Teacher 的 TeacherID)
                    (c, teacherGroup) => new
                    {
                        Class = c,
                        Teachers = teacherGroup
                    })
                    // 第二步:SelectMany 展開分組并處理空值
                    .SelectMany(
                    temp => temp.Teachers.DefaultIfEmpty(),// 確保即使無關(guān)聯(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());

參考文章

責(zé)任編輯:武曉燕 來源: 追逐時光者
相關(guān)推薦

2025-02-24 11:16:20

2009-06-21 13:48:05

ShellLinux運算符

2009-08-11 15:51:08

C#運算符算術(shù)運算符

2024-02-26 15:17:20

2017-05-11 16:38:07

javascript邏輯運算符

2013-08-15 16:48:39

.Net基礎(chǔ)

2009-08-12 15:02:49

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

2009-08-12 15:20:18

C#賦值運算符復(fù)合賦值運算符

2023-04-10 08:58:13

C#關(guān)系運算符

2025-02-07 00:12:34

C#編程as

2009-11-18 09:02:55

PHP運算符

2025-01-24 08:32:00

運算符C#

2020-12-10 08:11:52

typeof instanceofJS

2016-10-14 14:04:34

JAVA語法main

2009-08-12 09:30:10

C#??運算符

2021-12-15 10:25:57

C++運算符重載

2009-08-12 10:47:03

C#運算符重載

2023-03-29 09:22:03

SQLWhere語句

2010-10-08 09:17:07

JavaScript表JavaScript運

2021-02-20 23:34:22

JavaScript運算符開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號