[英]How to query in .NET EF Core with Linq?
嗨,我有上图的关系表/model。
一名教师可以参加多项培训。 培训/课程可以是正式培训,也可以不是。 一个老师可能有很多学生。
现在我想获取其老师参加过 IsFormalTraining == true 课程的学生列表。
我如何在 .NET EF Core 2.2 中做到这一点?
编辑:
楷模:
Teacher
{
int Id;
string Name;
ICollection<TeacherStudent> students ;
}
TeacherStudent{
int Id;
int TeacherId;
int StudentId;
}
Student {
int Id;
string Name;
}
TeacherTraining{
int Id;
int TeacherId;
int CourseId;
DateTime StartDate;
}
Course {
int Id;
string Name;
}
我正在根据您的课程做出一些假设,因此您可能需要进行测试和调整,但我想它看起来像这样:
var students =
context.Students.Where(s =>
context.Teachers.Any(t =>
t.Students.Any(st => st.StudentId == s.Id) && context.TeacherTraining.Any(tt =>
tt.TeacherId == t.Id &&
context.Course.Any(c => tt.CourseId == c.Id && c.IsFormalTraining))));
如果没有大量的东西,我无法调试它,所以你可能不得不逐步完成它。 你也可以把它分解成更多的查询,它会很容易阅读等等,但它可能不会很有效(当然,如果没有运行测试,我不知道这有多有效)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.