C# 大于Lambda表达式中的联接
质疑C# 大于Lambda表达式中的联接,c#,linq,linq-to-dataset,C#,Linq,Linq To Dataset,质疑 var res4=来自dtEmp.AsEnumerable()中的u 从dtDept.AsEnumerable()中的v开始 假设DOJ=u.Field(“DOJ”) 其中u.Field(“部门ID”)==v.Field(“部门ID”)&& 司法部>新日期时间(2014年1月4日) 选择新的 { 名称=u.字段(“名称”), 部门=v.字段(“部门名称”) }; 如何在Lambda表达式中编写相同的查询?您指的是方法链语法吗 var res4 = from u in dtEmp.AsE
var res4=来自dtEmp.AsEnumerable()中的u
从dtDept.AsEnumerable()中的v开始
假设DOJ=u.Field(“DOJ”)
其中u.Field(“部门ID”)==v.Field(“部门ID”)&&
司法部>新日期时间(2014年1月4日)
选择新的
{
名称=u.字段(“名称”),
部门=v.字段(“部门名称”)
};
如何在Lambda表达式中编写相同的查询?您指的是方法链语法吗
var res4 = from u in dtEmp.AsEnumerable()
from v in dtDept.AsEnumerable()
let DOJ = u.Field<DateTime>("DOJ")
where u.Field<int>("DepartmentID") == v.Field<int>("DepartmentID") &&
DOJ > new DateTime(2014, 01, 04)
select new
{
Name = u.Field<string>("Name"),
Department = v.Field<string>("DepartmentName")
};
var res4=dtEmp.AsEnumerable()
.SelectMany(u=>dtDept.AsEnumerable(),(u,v)=>new{u,v})
.Select(@t=>new{@t,DOJ=u.Field(“DOJ”)})
其中(@t=>u.Field(“部门ID”)==v.Field(“部门ID”)&&
美国司法部>新日期时间(2014,01,04))。选择(@t=>new
{
名称=u.字段(“名称”),
部门=v.字段(“部门名称”)
});
您可以使用Where和Join方法:
var res4 = dtEmp.AsEnumerable()
.SelectMany(u => dtDept.AsEnumerable(), (u, v) => new {u, v})
.Select(@t => new {@t, DOJ = u.Field<DateTime>("DOJ")})
.Where(@t => u.Field<int>("DepartmentID") == v.Field<int>("DepartmentID") &&
DOJ > new DateTime(2014, 01, 04)).Select(@t => new
{
Name = u.Field<string>("Name"),
Department = v.Field<string>("DepartmentName")
});
var res4=dtEmp.Where(u=>u.Field(“DOJ”)>new DateTime(2014,01,04))
.加入(商务部),
u=>u.Field(“部门ID”),
v=>v.Field(“部门ID”),
(环境管理计划,部门)=>新建
{
名称=emp.字段(“名称”),
部门=v.字段(“部门名称”)
});
为什么重复问题?
var res4 = dtEmp.Where(u => u.Field<DateTime>("DOJ") > new DateTime(2014, 01, 04))
.Join(dtDept,
u => u.Field<int>("DepartmentID"),
v => v.Field<int>("DepartmentID"),
(emp, dept) => new
{
Name = emp.Field<string>("Name"),
Department = v.Field<String>("DepartmentName")
});