LINQ获得来自多个记录的最新记录列出
问题描述:
StudentName /教室/ GradeA/GradeB /格拉代茨/ GradeDate
学生教室是固定的,这样列永远不会改变的表。
每个学生都有不同的GradeDate的多个GradeA,GradeB和GradeC值。
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;
}
上面的查询返回一切,列表中有多个同样的学生。
我怎样才能得到最新的价值?
表:
ClassroomMaster
- 编号
- UpdateDate
- 课堂
ClassroomDetail
- 编号
- CM_ID(与ClassroomMaster标识外键)
- StudentName
- GradeA
- GradeB
- 格拉代茨
- GradeDate
在控制器
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;
}
最新值分组?你能解释更多吗? – CodeNotFound
是的,每个学生将会有一个记录,并且只有最新的一个记录 –
,并且在我的控制器上我称之为var bdetail = _bunkerPriceService.GetLatestClassroomDetail(教室).OrderBy(d => d.StudentName); var model = new List(); foreach(var pr in bdetail) { –