Assuming a variable called context
, this should work:
context.tbl_AmountEmpRole
.Where(er => context.tbl_UserRoles.Where(ur => ur.Emp_id == 4).Select(ur => ur.Role_Name).Contains(er.Role_Name))
.Max(er => er.amount_limit);
However, I believe you might be able to rewrite your query using a JOIN
:
SELECT MAX(a.amount_limit) as AmountLimit FROM tbl_AmountEmpRole a
INNER JOIN tbl_UserRoles b
ON a.Role_Name = b.Role_Name
WHERE b.Emp_id = 4
In which case you could use the Join
method:
context.tbl_AmountEmpRole.Join(context.tbl_UserRoles, er => er.Role_Name, ur => ur.Role_Name, new { er, ur })
.Where(j => j.ur.Emp_id = 4)
.Max(j => j.er.amount_limit);
Make sure to double-check syntax and signatures. I wrote this from memory.