EF中的多对多关系linq查询

时间:2012-03-01 03:38:13

标签: c# linq entity-framework

我有3个表学生,课程和学生课程链接表,我如何返回给予学生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

1 个答案:

答案 0 :(得分:1)

鉴于这是EF和您的最新说明,您应该在Courses实体上拥有Student导航属性,并在Students实体上设置Course导航你要做以下事情:

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