다음과 같은 간단한 데이터 구조가 있습니다. 고유 ID가있는 학생 목록. 각 학생에게는 자신이 등록한 코스 목록이 있습니다. 코스도 고유 한 ID를 갖지만 여러 코스의 학생 목록이 있습니다 (각 코스는 여러 학생이 등록 함).LINQ를 사용하여 내부 목록의 값 얻기
나는 studentId와 courseId에 의해 특정 학년의 가치를 찾고 있습니다. 아래 linq 쿼리를 사용하고 있습니다. 난 아직도 내 linq와 약간의 흔들림이야, 내가 작성한 쿼리가 정확한지 궁금 해서요? 올바르게 작동하지만 더 우아하고 읽기 쉽도록 변경할 수 있습니까?
var studentGrade =
(from student in students
where student.studentId == 1
from course in student.studentCourses
where course.courseId == 1
select course.grade)
.FirstOrDefault();
어떤 부분 (학생/과정)의 경우 조회가 실패의, 시퀀스가 비어되며 FirstOrDefault
당신에게 0을 줄 것이다 :
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;' –