[英]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.