LINQ Get Latest Record from Multiple Records to List

Viewed 3145

I have a table as

StudentName / Classroom / GradeA / GradeB / GradeC / GradeDate

The students classrooms are fixed so that column never changes.

Each student has multiple GradeA, GradeB and GradeC values with different GradeDate.

public virtual IList<ClassroomDetail> GetLatestClassroomDetail(string classroom)
    {

        var query = from pc in _classroomDetailRepository.Table
                   where pc.Classroom == classroom
                   select pc;

        var result = new List<ClassroomDetail>(query);

        return result;
    }

Above query returns everything and there are multiple same students in the list.

How can I only get latest values?

Tables:

ClassroomMaster

  • Id
  • UpdateDate
  • Classroom

ClassroomDetail

  • Id
  • Cm_Id (has foreign key with ClassroomMaster Id)
  • StudentName
  • GradeA
  • GradeB
  • GradeC
  • GradeDate

On Controller

var bdetail = _classroomService.GetLatestClassroomDetail(classroom).OrderBy(d => d.StudentName);

            var model = new List<ClassroomDetail>();
            foreach (var pr in bdetail)
            {

                model.Add(new ClassroomDetail
                {
                    Id = pr.Id,
                    Classroom = pr.Classroom,
                    StudentName = pr.StudentName,
                    GradeA = pr.GradeA,
                    GradeB = pr.GradeB,
                    GradeC = pr.GradeC,
                    GradeDate = pr.GradeDate,
                });
            }


            return PartialView(model);
2 Answers
Related