LINQ 从多个记录中获取最新记录以列出



我有一个表格作为

学生姓名/教室/A 年级/B 年级/C 年级/年级日期

学生的教室是固定的,因此列永远不会改变。

每个学生都有多个具有不同年级日期的 A、B 级和 C 级值。

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;
}

上面的查询返回所有内容,并且列表中有多个相同的学生。

如何仅获取最新值?

表:

课堂大师

  • 编号
  • 更新日期
  • 课堂

教室详情

  • 编号
  • Cm_Id(具有带有 ClassroomMaster ID 的外键(
  • 学生姓名
  • A级
  • B级
  • C级
  • 成绩日期

在控制器上

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);

它将解决您的问题

var query = _classroomDetailRepository.Table
.Where(a => a.Classroom == classroom)             
.Select(b => b.OrderByDescending(y => y.GradeDate).Take(1).FirstOrDefault());

我终于找到了解决方案:D

public virtual IList<ClassroomDetail> GetLatestClassroomDetail(string classroom)
{
var query = _classroomDetailRepository.Table
.Where(z => z.Classroom == classroom)
.GroupBy(x => x.StudentName)                
.Select(x => x.OrderByDescending(y => y.GradeDate).Take(1).FirstOrDefault());
var result = new List<BunkerPriceDetail>(query);
return result;
}

最新更新