EF中的多对多关系linq查询
本文关键字:linq 查询 关系 EF | 更新日期: 2023-09-27 18:26:08
我有三个表Student、Course和链接表StudentCourse,如果学生Id为1,我如何返回所有课程,但也包括学生Id可能不是1的行,并且与Id为1的学生正在学习相同的课程?结构如下:
student courses studentcourse
1 8 1 - 8
2 9 2 - 8
3 10 3 - 9
因此,棘手的部分是,我还想包括课程8或id为1的学生参加的任何其他课程的其他行。
最终结果应该是2行:where子句将指定我对student id=1的课程感兴趣(这是id为8的课程),但我也想包括该课程的其他行。所以结果是:
1 - 8
2 - 8
考虑到这是EF和您的最新澄清,您应该在Student
实体上具有Courses
导航属性,在Course
实体上具有允许您执行以下操作的Students
导航属性:
var students = db.Students
.Single(x=> x.Id == 1)
.Courses.SelectMany(c=> c.Students)
.Distinct();