LINQ – 加入多个列表
我在这里查看了101 Linq示例,但我在该列表中看不到这样的内容。 如果我在那里没有看到相关的例子,请链接到它。
如果我有这三个类:
class Student { int id; string name } class Course { int id, string name } class Enrolment { int studentId; int courseId; }
我如何使用LINQ获取学生注册的课程列表? (假设我有一个所有三个类的IList)
怎么样:
IEnumerable FindCoursesForStudent(Student student) { return from enrolment in Enrolments where enrolment.studentId == student.id join course in Courses on enrolment.courseId equals course.id select course; }
不是一个明确的答案,但可能隐含有助于构建您的系统。
您是否考虑过如此丰富的域模型:
class Student { int id; string name; IEnumerable enrolments } class Course { int id, string name; } class Enrolment { Student student; Course course; }
?
然后Student类可以有一个方法GetEnroledCourses(),如下所示:
public IEnumerable GetEnroledCourses() { return enrolements.Select(enrolement => enrolement.Course).ToList().AsReadonly(); }
在某些情况下,仅仅是与数据库一对一映射的模型就足够了,但如果您有复杂的业务逻辑,那么“贫血域模型”可能会让您感到困惑 。
var courses = (from course in courseList join enr in enrolmentList on enr.courseId equals course.id where enr.studentId = select course);