LINQ - Group Join(组联接)

LINQ - Group Join(组联接) 首页 / LinQ入门教程 / LINQ - Group Join(组联接)

在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组加入的语法

根据无涯教程的要求,使用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组加入示例

下面是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子句,并根据部门名称对元素进行分组。

输出:

LINQ Group Join

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

技术教程推荐

系统性能调优必知必会 -〔陶辉〕

正则表达式入门课 -〔涂伟忠〕

实用密码学 -〔范学雷〕

分布式金融架构课 -〔任杰〕

大厂设计进阶实战课 -〔小乔〕

Dubbo源码剖析与实战 -〔何辉〕

手把手带你搭建推荐系统 -〔黄鸿波〕

后端工程师的高阶面经 -〔邓明〕

AI大模型企业应用实战 -〔蔡超〕

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