I have got SQL Query and trying to use LINQ because if EF. Can someone have a look at it tell me where is my mistake, please? SQL Query is working but LINQ returns no data. Basically there is two table A and Table B. I want to do join AB which is (Bring me Data exist in Table A but not in Table B)
x
SqlQueryText = " SELECT A.EmployeeID" +
" FROM EmployeeCourseModels A " +
" LEFT JOIN EmployeeTrainingModels B " +
" ON A.EmployeeID = B.EmployeeID and a.CourseID = B.CourseID" +
" WHERE(B.CourseID is null and B.EmployeeID is null) AND A.CourseID = " + courseID;
I tried this but not working. I need two key values to match when i join two tables as you can see from SQL table.
var ReqList = from course in employeeCourseRepository.EmployeeCourseList
join training in employeeTrainingRepository.EmployeeTrainingList
on new { c = course.CourseID, e = course.EmployeeID } equals new { c = training.CourseID, e = training.EmployeeID }
where (course.CourseID == Blist.CourseID)
select new { empID = course.EmployeeID };
Advertisement
Answer
Your original query is LEFT JOIN while your code is INNER one, change it into:
var ReqList = from course in employeeCourseRepository.EmployeeCourseList.Where(c => c.CourseID == Blist.CourseID)
join training in employeeTrainingRepository.EmployeeTrainingList
on new { c = course.CourseID, e = course.EmployeeID } equals new { c = training.CourseID, e = training.EmployeeID } into j
from res in j.DefaultIfEmpty()
select new { empID = course.EmployeeID };