LINQ - Left Join(左联接)

LINQ - Left Join(左联接) 首页 / LinQ入门教程 / LINQ - Left Join(左联接)

在LINQ中,LEFT JOINLEFT OUTER JOIN用于返回左侧集合中的所有记录或元素,并匹配集合右侧的元素。

在 LINQ 中,要实现 LEFT Join 行为,必须使用“INTO”关键字和“DefaultfEmpty()”方法。

LINQ LEFT OUTER JOIN的语法

使用LINQ LEFT OUTER JOIN获取集合中的所有元素并匹配右集合中的元素的语法。

var result = from e in objEmp1
join d in objDept1
on e.DeptId equals d.DepId into empDept
from ed in empDept.DefaultIfEmpty()
select new
{
    EmployeeName = e.Name,
    DepartmentName = ed == null ? "No Department" : ed.DepName
}

从上面的语法中,我们使用 into 和 DefaultfEmpty() 方法来实现左外连接,从 "objEmp1", "objDept1" 集合中获取元素。

LINQ左向外加入示例

下面是使用LINQ LEFT OUTER JOIN根据指定条件从集合中获取元素的示例。

using System;
using System. Collections;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Programme2
    {
        static void Main(string[] args)
        {
/*创建“Department”类的对象
并创建一个包含添加记录的列表*/
        List objDept1 = new List()
        {
        new Department{DepId=1,DepName="Software"},
        new Department{DepId=2,DepName="Finance"},
        new Department{DepId=3,DepName="Health"}
        };
    /*创建“Department”类的对象
并创建一个包含添加记录的列表*/
           ListobjEmp1 = new List()
            {
            new Employee { EmpId=1,Name = "Akshay Tyagi", DeptId=1 },
            new Employee { EmpId=2,Name = "Vishi Tyagi", DeptId=1 },
            new Employee { EmpId=3,Name = "Arpita Rai", DeptId=2 },
            new Employee { EmpId=4,Name = "Mani", DeptId =2},
            new Employee { EmpId=5,Name = "Madhav Sai"}
            };
    /*使用 Linq Query 通过 join 子句获取信息
并检查包含该员工的部门与否 */
            var result = from e in objEmp1
            join d in objDept1
            on e.DeptId equals d.DepId into empDept
            from ed in empDept.DefaultIfEmpty()
            select new
            {
            EmployeeName = e.Name,
            DepartmentName = ed == null ? "No Department" : ed.DepName
            };
            foreach (var item in result)
            {
            Console.WriteLine(item.EmployeeName + "\t | " + item.DepartmentName);
            }
            Console.ReadLine();
            }
            }
            class Department
            {
            public int DepId { get; set; }
            public string DepName { get; set; }
            }
            class Employee
            {
            public int EmpId { get; set; }
            public string Name { get; set; }
            public int DeptId { get; set; }
            }
}

从上面的例子中,我们在 LINQ 中使用左外连接从 "objEmp1", "objDept1" 集合中获取元素,这里我们指定了检查员工是否有部门的条件。如果没有映射部门,则从条件中取“无部门”。

输出:

LINQ Left Outer Join

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

Go语言核心36讲 -〔郝林〕

Android开发高手课 -〔张绍文〕

面试现场 -〔白海飞〕

Kafka核心技术与实战 -〔胡夕〕

Web安全攻防实战 -〔王昊天〕

深度学习推荐系统实战 -〔王喆〕

讲好故事 -〔涵柏〕

PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕

好记忆不如烂笔头。留下您的足迹吧 :)