在LINQ中,LEFT JOIN或LEFT OUTER JOIN用于返回左侧集合中的所有记录或元素,并匹配集合右侧的元素。
在 LINQ 中,要实现 LEFT Join 行为,必须使用“INTO”关键字和“DefaultfEmpty()”方法。
使用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 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”类的对象 并创建一个包含添加记录的列表*/ ListobjDept1 = new List () { new Department{DepId=1,DepName="Software"}, new Department{DepId=2,DepName="Finance"}, new Department{DepId=3,DepName="Health"} }; /*创建“Department”类的对象 并创建一个包含添加记录的列表*/ List objEmp1 = 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" 集合中获取元素,这里我们指定了检查员工是否有部门的条件。如果没有映射部门,则从条件中取“无部门”。
输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕