LINQ Lambda Left join with an Inner join

前端 未结 3 390
予麋鹿
予麋鹿 2021-01-21 12:13

I have written a LINQ lambda query which so far which returns all staff which do not have an associated training row which works fine. I now need to amend my where clause to use

3条回答
  •  温柔的废话
    2021-01-21 12:13

    Inner joins are performed with the Join method. I think your query should go something like this:

    var query = db.staff
                  .GroupJoin(db.training,
                             s => s.id,
                             t => t.staff_id,
                             (s, t) => new { Staff = s, Training = t.FirstOrDefault() })
                  .Join(db.manager,
                        gj => gj.Staff.manager_id,
                        m => m.id,
                        (gj, m) => new { Staff = gj.Staff, Training = gj.Training, Manager = m })
                  .Where(st => st.Training == null
                            && st.Manager.id == managerId);
    

提交回复
热议问题