繁体   English   中英

如何使用 Linq 在 .NET EF Core 中查询?

[英]How to query in .NET EF Core with Linq?

我的 EF 图

嗨,我有上图的关系表/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM