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中的多对多关系linq查询

考虑到这是EF和您的最新澄清,您应该在Student实体上具有Courses导航属性,在Course实体上具有允许您执行以下操作的Students导航属性:

var students =  db.Students
                  .Single(x=> x.Id == 1)
                  .Courses.SelectMany(c=> c.Students)
                  .Distinct();