在LINQ中,Cross Join将生成项集合的笛卡尔积。加入集合不需要任何条件。
在LINQ Cross Join中,左侧集合上的每个元素都将映射到右侧集合上的所有元素。
下面是使用LINQ Cross Join获取集合项的笛卡尔乘积的语法。
var result = from e in objEmp1 from d in objDept1 select new { EmployeeName = e.Name, DepartmentName = d.DepName };
从上面的语法来看,“objEmp1”集合中的每个元素都会映射到“objDept1”集合中的所有元素。
下面是使用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'的对象 ListobjDept1 = 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来获得项集合的笛卡尔乘积的方法。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)