簡體   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