【问题标题】:SQL Query to LINQ (use join with two keys)SQL Query to LINQ(使用带有两个键的连接)
【发布时间】:2020-06-06 21:42:57
【问题描述】:

我有 SQL Query 并尝试使用 LINQ,因为如果 EF.有人可以看看它告诉我我的错误在哪里,好吗? SQL 查询正在运行,但 LINQ 不返回任何数据。基本上有两个表 A 和表 B。我想加入 A\B 即(带我数据存在于表 A 中但不在表 B 中)

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;

我试过了,但没有用。从 SQL 表中可以看出,当我加入两个表时,我需要两个键值来匹配。

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

【问题讨论】:

  • 尝试在连接中只放一个键,修改的是两个项目,其中 ((course.CourseID == Blist.CourseID) && (course.CourseID == training.CourseID))

标签: c# sql linq


【解决方案1】:

您的原始查询是 LEFT JOIN 而您的代码是 INNER 之一,将其更改为:

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

【讨论】:

  • @AdilSari 很乐意提供帮助!
猜你喜欢
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
相关资源
最近更新 更多