在LINQ中,具有"into"表达式的联接子句称为Group联接。在LINQ中,Group Join生成一个对象元素序列,该序列基于左集合和右集合中的匹配元素。
如果在右侧集合和左侧集合中找不到匹配的元素,则JOIN子句将返回空数组。在LINQ中,GROUP JOIN等同于INTERNAL EQUI JOIN,只是将元素组织成组的结果不同。
链接:https://www.learnfk.comhttps://www.learnfk.com/linq/linq-group-join.html
来源:LearnFk无涯教程网
根据无涯教程的要求,使用LINQ Group Join从给定集合中获取匹配元素的语法。
var result = from d in objDept join e in objEmp on d.DepId equals e.DeptId into empDept select new { DepartmentName = d.DepName, Employees = from emp2 in empDept orderby emp2.Name select emp2 };
根据上述语法,使用带有"into"表达式的JOIN子句从集合中获取匹配的元素。
下面是LINQ Group 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) { //创建一个对象'objDept1'并在'Department'的列表中添加一些值 List<Department> objDept1 = new List<Department> (){ //在 Department 类中插入数据 new Department{DepId=1,DepName="Software"}, new Department{DepId=2,DepName="Finance"}, new Department{DepId=3,DepName="Health"} }; //创建一个对象 'objEmp1' 并在 'Employee' 的列表中添加一些值 List<Employee>objEmp1 = new List<Employee>() { //add the data in the Employee class new Employee { EmpId=1,Name = "Devansh", DeptId=1 }, new Employee { EmpId=2,Name = "Shubham", DeptId=1 }, new Employee { EmpId=3,Name = "Aman", DeptId=2 }, new Employee { EmpId=4,Name = "Raman", DeptId =2}, new Employee { EmpId=5,Name = "Madhav"} }; //使用 linq 查询通过使用基于部门名称的 join 子句对两个表的元素进行分组 var result = from d in objDept1 join e in objEmp1 on d.DepId equals e.DeptId into empDept select new { DepartmentName = d.DepName, Employees = from emp2 in empDept orderby emp2.Name select emp2 }; int totalItems = 0; foreach (var empGroup in result) { Console.WriteLine(empGroup.DepartmentName); foreach (var item in empGroup.Employees) { totalItems++; Console.WriteLine(" {0}", item.Name); } } 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; } } }
在上面的示例中,无涯教程使用了带有"into"表达式的JOIN子句,并根据部门名称对元素进行分组。
输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)