【发布时间】:2022-01-03 02:30:24
【问题描述】:
假设有一个数据库来管理学生。 我正在使用以下(简化的)类:
学生
int id
字符串名称
学生注册信息
int 学生ID
int courseId
课程
int courseInfo
字符串名称
在上述表中,studentenrollmentinfo 是一个连接表,用于处理课程和学生之间的多对多关系。
现在我想查询当前注册不同课程列表的所有学生的姓名。例如:
让所有学生注册生物、数学和艺术,我想让所有学生注册所有这些课程。
我尝试了以下方法:
List<string> requiredCourses = new List<string>(){"Maths", "Biology", "Arts"};
var query = from student in _context.students
join enrollmentInfo in _context.StudentEnrollmentInfo on
student.id equals enrollmentInfo.studentId
join course in _context.Course on course.id equals enrollmentInfo.courseId
where requiredCourses.All(r => r.equals(course.name))
select(student.name)
但是这不起作用,我的猜测是因为连接,除了连接表之外,还使列表变平,使得每个具有每个课程组合的学生都是一个唯一值,因此永远不会有任何 AND 条件没错。
任何人都可以提出一些建议来指引我正确的方向吗?
【问题讨论】:
标签: c# sql entity-framework linq