2009-04-16 15 views
2

は、私はこれらの3つのクラスを持っている場合。LINQグループ化と集約

しかし、学生が複数のコースに複数回登録した場合、各コースの最新の登録のみをどのように表示できますか?

私は、コース別にグループ化し、enrolmentDate = Max(enrolmentDate)またはそれに類するものをフィルタリングする必要があると仮定していますか?

(これは見慣れた場合、それは後続の私のprevious LINQ questionからだから、それはです。)

答えて

2
Enumerable<Course> FindCoursesForStudent(Student student) 
{ 
    return from enrolment in Enrolments 
      where enrolment.studentId == student.id 
      && enrolment.enrolmentDate == (from ed in Enrolments 
      where ed.enrolmentDate == enrolment.enrolmentDate 
      select ed.enrolmentDate).Max() 
      join course in Courses 
       on enrolment.courseId equals course.id 
      select course; 
} 
1

学生が撮影した各コースの最新の登録を取得するには、私のようなものを使用したいです:

IEnumerable<Enrolment> FindCoursesForStudent(Student student) { 
     return from enrolment in Enrolments 
       where enrolment.studentId == student.id 
       group enrolment by enrolment.courseId into gp 
       select gp.OrderBy(e => e.enrolmentDate).First(); 
    } 

あなたが求めていることはありますか?