【发布时间】:2012-08-15 09:57:44
【问题描述】:
我有以下简单的数据结构。学生列表,每个学生都有一个唯一的 ID。每个学生都有一个他们注册的课程列表。课程也有唯一的 ID,但将是多个 studentCourses 列表的成员(因为每个课程都由多个学生注册)。
我正在尝试通过 studentId 和 courseId 查找特定的成绩值。我正在使用下面的 linq 查询。我对我的 linq 仍然有点动摇,想知道我写的查询是否正确?它确实可以正常工作,但是可以将其更改为更优雅/可读吗?
class Student {
int studentId;
string studentName;
List<Course> studentCourses;
}
class Course {
int courseId;
string courseName;
int grade;
}
List<Student> students = new List<Student>();
//populate list.
int studentGrade = students
.Where(c => c.studentId == 1)
.Select(c => c.studentCourses.FirstOrDefault(a => a.courseId == 1).grade)
.FirstOrDefault();
【问题讨论】:
-
只是另一种方式。
int studentGrade = students.FirstOrDefault(s => s.studentId == 1).studentCourses.FirstOrDefault(c => c.courseId==1).grade;