EF 选择多个不检索没有关系的记录



我有两个表,例如,StudentGrade.
这两个表是多对多的关系,所以表是StudentGrade.
通过使用.SelectMany查询,我可以检索所有有关系的记录。
例如

var myResult = myDb.Student.SelectMany(x => x.Grade).ToList();

但是,假设我在Student表中添加了一条新记录,这条记录与Grade没有关系,这个新记录不能通过使用上面的查询来检索。
如何检索包括这个新数据在内的所有数据?

Student
Id     Name    Age
1      AAA     4
2      BBB     5
3      CCC     6
4      DDD     7
Grade
Id    Name
1     G1
2     G2
3     G3
4     G4
StudentGrade
Student    Grade
2          1
2          2
2          3
3          3
Require result:
Id     Name    Age   Grade
1      AAA     4  
2      BBB     5     G1
2      BBB     5     G2
2      BBB     5     G3
3      CCC     6     G3    
4      DDD     7 

我发现完整的外连接会有所帮助,但它会在多对多关系中工作吗?
如何解决这个问题?

var result = (from s in myDb.Student 
from g in myDb.Grades 
where !g.Select(x => x.Student).Contains(s) || g.Student == null || g.Student == s).ToList();

只要我理解了你的问题,这应该给你

  • 所有有成绩的学生,
  • 所有没有学生的年级,
  • 和所有没有成绩的学生。我没有看到你的模型,但这应该有帮助

var myResult = myDb.Student。SelectMany (x =比;

x.Grade) .ToList ();

这个查询的意思是:检索包含Student的所有Grades。如果你想要学生,选择学生,如果你想要包括成绩。

var myResult = myDb.Students.Include(x => x.Grades).ToList();

最新更新