我正在构建这个小应用程序,以便学习实体框架的基础知识。它使用带有3个表的MySQL数据库:课程,学生和Students_has_Courses:
我使用此db在Visual Studio中创建实体模型:
工作正常。我可以用我的datagridview绑定一个表,修改数据并按一个按钮来保存更改。但正如您所看到的,Students_has_Courses是一个关联(这对我来说很新)。现在我的问题是:我需要指定学生证的每个课程ID(了解学生正在学习的课程)。我认为这个LINQ查询没问题:
var query = from s in school.Students.AsEnumerable()
where s.ID == selectedStudentId
select s.Courses;
但我似乎无法从此EntityCollection中提取课程ID?我使用了foreach(var course in query)
,但我真的被困在这里。
答案 0 :(得分: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
子句之前将整个学生表加载到内存中并应用选择。