这两天一直在研究这个,网上查了不少人的资料,但各有各的说法,各有各的理论和方法结论,我也是陷入了一头雾水,只好再度发帖提问
打个比方
我现有三张表
学生表:ID,Name,Age
课程表:CourseID,StudentID
教师表:TeacherID,CourseID,PartmentID
其中,学生表与课程表是一对一的关系,通过ID与StudentID进行匹配,但学生表与教师表没有直接关系。
课程表与教师表是一对多的关系,通过CourseID进行匹配,一个课程可能包含多位教师。
现我想生成的具体格式如下:
【 {学生表:
ID,
Name,
Age
}
{
课程表:
CourseID,
StudentId,
教师表:{TeacherID,CourseID,PartmentID}
}
】
因为涉及多表查询,我本来的想法是使用Linq语句。
from a in db.student
join b in db.Course on a.Id equals b.studentid
join c in db.Course on b.CourseId equals c.CourseId
然后一个个再塞进赋值,但很快我就意识到Join链接会导致生成大段无意义重复的行列,所以请坛友给予我一点思路和想法。
由于课程表与教师表是一对多关系,可能有多个教师表对应单个课程表,这也意味着教师表要用List来存放。
之前不是给你代码了么,你可以嵌套查询啊
db.Students.Where(x => x.id == id).Select(x => new { x, courses = db.Where(y => y.id == x.courseid) })