如何基于另一个链接表中的值从链接表中进行选择

时间:2019-09-29 14:59:31

标签: c# entity-framework entity-framework-core

假设我们有桌子

学生

Id,
Name

ClassRoom

Id,
Room Number

StudentClassRoom

Id
StudentId
ClassRoomId

家庭作业

Id
Name

学生作业

Id
StudentId
HomeworkId
CreatedAt

我想查找与我一起上课的所有学生的所有StudentHomework记录。

例如,如果有4个班级,A,B,C,D。如果我在A,B,C班级中,那么我希望能够找到该学生所在的所有StudentHomework记录像我一样的StudentClassRoom。

我尝试过

            return Context.StudentHomeworks
                .Where(e => e.Student.StudentClassRooms.Select(b => b.Student.Id).Contains(e.Student.Id))
                .OrderByDescending(b => b.CreatedAt)

并没有给我我期望的结果。有人可以帮我解决我需要的查询吗?谢谢

1 个答案:

答案 0 :(得分:0)

我会做类似的事情:

    var myId = 1111111;

    // first select all ids of student in your class
    var studentInMyClass = Context.StudentClassRooms
        .Where(a => a.StudentId == myId).Select(a => a.StudentId).ToList();

    // then select homeworks of those students
    return studentHomeworks
        .Where(b => studentIdsInMyClass.Contains(b.StudentId))
        .OrderByDescending(b => b.CreatedAt);