C# 使用Lambda表达式合并没有联接的表
不使用JOIN关键字组合表C# 使用Lambda表达式合并没有联接的表,c#,linq,C#,Linq,不使用JOIN关键字组合表 var res2 = from u in dtEmp.AsEnumerable() from v in dtDept.AsEnumerable() where u.Field<int>("DepartmentID") == v.Field<int>("DepartmentID") && u.
var res2 = from u in dtEmp.AsEnumerable()
from v in dtDept.AsEnumerable()
where u.Field<int>("DepartmentID") == v.Field<int>("DepartmentID") &&
u.Field<double>("Salary") > 10000
select new
{
Name = u.Field<string>("Name"),
Department = v.Field<string>("DepartmentName")
};
var res2=来自dtEmp.AsEnumerable()中的u
从dtDept.AsEnumerable()中的v开始
其中u.Field(“部门ID”)==v.Field(“部门ID”)&&
u、 字段(“工资”)>10000
选择新的
{
名称=u.字段(“名称”),
部门=v.字段(“部门名称”)
};
如何在不使用Join关键字的情况下使用Lambda表达式执行相同的操作?您的意思是要从SQL语法切换到方法链语法吗?i、 e:
var res2 = dtEmp.AsEnumerable()
.SelectMany(u => dtDept.AsEnumerable(), (u, v) => new {u, v})
.Where(@t => u.Field<int>("DepartmentID") == v.Field<int>("DepartmentID") &&
u.Field<double>("Salary") > 10000).Select(@t => new
{
Name = u.Field<string>("Name"),
Department = v.Field<string>("DepartmentName")
});
var res2=dtEmp.AsEnumerable()
.SelectMany(u=>dtDept.AsEnumerable(),(u,v)=>new{u,v})
其中(@t=>u.Field(“部门ID”)==v.Field(“部门ID”)&&
u、 字段(“工资”)>10000)。选择(@t=>new
{
名称=u.字段(“名称”),
部门=v.字段(“部门名称”)
});
你说的“不加入”是什么意思<代码>其中u.Field(“DepartmentID”)==v.Field(“DepartmentID”)是一个连接,不是吗?嗯……我的意思是不使用连接关键字。连接关键字有什么问题?你需要lambda表达式?是的,我想要lambda表达式。@Pearl-好的!在查询语法中,您没有join
关键字,但实际上这是一个连接。回想一下以前的SQL时代,我们在没有Join
的情况下做同样的事情。