使用联接将linq查询转换为lambda查询

时间:2019-04-04 07:44:47

标签: c# entity-framework lambda

我是lambda的新手。我如何使用lambda编写以下代码。 谢谢

User user1 = (from u in db.Users
                                  join h in db.HCM_SMS_ROLE_MAPPINGs
                                  on u.roleID equals h.SMS_Role_ID
                                  where (u.Employee_Code == employeeCode && u.isDeleted == false && h.Is_Active_App == true)
                                  select u).Distinct().FirstOrDefault();

2 个答案:

答案 0 :(得分:2)

这应该对您有用:

db.Users.Join(db.HCM_SMS_ROLE_MAPPINGs, u => u.roleID, h => h.SMS_Role_ID, (u, h) => new
{
u, h
}
).Where(x=> x.u.Employee_Code == employeeCode && x.u.isDeleted == false && x.h.Is_Active_App == true).Select(x=> x.u).Distinct().FirstOrDefault()

干净简单!希望对您有帮助

答案 1 :(得分:0)

我的方法是右键单击左侧栏中的灯泡,然后选择“将LINQ转换为方法链”,这样:

User user1 = (db.Users
                .Join(db.HCM_SMS_ROLE_MAPPINGs, 
                   u => u.roleID, 
                   h => h.SMS_Role_ID, 
                   (u, h) => new { u, h })
                .Where(@t => (u.Employee_Code == employeeCode && u.isDeleted == false && h.Is_Active_App == true))
                .Select(@t => u))
                .Distinct()
                .FirstOrDefault();

我认为这是Resharper功能。