3

我有这个小应用程序,我正在构建它作为学习实体框架基础知识的练习。它使用带有 3 个表的 MySQL 数据库:Courses、Students 和 Students_has_Courses: 数据库架构

我使用这个数据库在 Visual Studio 中创建了一个实体模型: VS 架构

它工作正常。我可以用我的 datagridview 绑定一个表,修改数据并按下一个按钮来保存更改。但正如您所见,Students_has_Courses 是一个关联(这对我来说很新)。现在我的问题是:我需要指定学生 ID 的每个课程 ID(以了解学生正在学习哪些课程)。我认为这个 LINQ 查询会很好:

var query = from s in school.Students.AsEnumerable()
            where s.ID == selectedStudentId
            select s.Courses;

但我似乎无法从这个 EntityCollection 中提取课程 ID?我用过,foreach(var course in query)但我真的被困在这里。

4

1 回答 1

5

您应该能够使用以下方法获取课程 ID:

var studentsCourseIDs = (from s in school.Students
                         where s.ID == selectedStudentId
                         select s.Courses.Select(c => c.ID))
                        .Single();

或者,您可以从Courses集合开始:

var studentsCourseIDs = (from c in school.Courses
                         where c.Students.Any(s => s.ID == selectedStudentId)
                         select c.ID)
                        .ToList();

不要在您的示例中使用,因为它会在子句和应用选择AsEnumerable()之前将整个学生表加载到内存中。where

于 2012-05-28T12:58:33.267 回答