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") 
        });