LINQ - Cross Join(交叉联接)

LINQ - Cross Join(交叉联接) 首页 / LinQ入门教程 / LINQ - Cross Join(交叉联接)

在LINQ中,Cross Join将生成项集合的笛卡尔积。加入集合不需要任何条件。

在LINQ Cross Join中,左侧集合上的每个元素都将映射到右侧集合上的所有元素。

LINQ交叉联接的语法

下面是使用LINQ Cross Join获取集合项的笛卡尔乘积的语法。

var result = from e in objEmp1
from d in objDept1
select new
{
    EmployeeName = e.Name,
    DepartmentName = d.DepName
};

从上面的语法来看,“objEmp1”集合中的每个元素都会映射到“objDept1”集合中的所有元素。

LINQ交叉联接示例

下面是使用LINQ Cross 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'的对象
            List objDept1 = new List(){
    //在部门中赋值
            new Department{DepId=1,DepName="Software"},
            new Department{DepId=2,DepName="Finance"},
            new Department{DepId=3,DepName="Health"}
};
    //创建员工列表'objEmp1'的对象
            List objEmp1 = new List()

{
//在 Employee 列表中插入值
new Employee { EmpId=1,Name = "Vaishali Tyagi", DeptId=1 },

new Employee { EmpId=2,Name = "Arpita Rai", DeptId=1 },

new Employee { EmpId=3,Name = "Vinay Tyagi", DeptId=2 },

new Employee { EmpId=4,Name = "Sateesh", DeptId =2},

new Employee { EmpId=5,Name = "Madhav"}

};
    /*应用 linq 查询从 Employee 中获取值
和部门列表并将值存储在变量“result”中*/
            var result = from e in objEmp1

                         from d in objDept1
    //Select 将获取员工姓名和部门名称
                         select new

                         {

                             EmployeeName = e.Name,

                             DepartmentName = d.DepName

                         };
    //foreach 循环将在“WriteLine”函数的帮助下打印结果的值
            foreach (var item in result)

            {

                Console.WriteLine(item.EmployeeName + "\t | " + item.DepartmentName);

            }

            Console.ReadLine();

        }

    }
    //在这里,我们创建名为 Department 和 Employee 的类并分配变量
    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 Cross Join

这就是如何使用LINQ Cross Join来获得项集合的笛卡尔乘积的方法。

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

技术教程推荐

左耳听风 -〔陈皓〕

Vue开发实战 -〔唐金州〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

职场求生攻略 -〔臧萌〕

Spark性能调优实战 -〔吴磊〕

程序员的个人财富课 -〔王喆〕

全链路压测实战30讲 -〔高楼〕

Web漏洞挖掘实战 -〔王昊天〕

云原生基础架构实战课 -〔潘野〕

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