按列获取每个实体订单的第一条记录

时间:2013-04-16 07:48:56

标签: linq entity-framework

我在linq中有一个查询,可以获取学生评估数据

new {x.StudentId, x.StudentAssessmentId, x.AssessmentName, x.SubmittedDate}

然后我在这个列表上执行一些操作,只获得每个学生最后一次添加的学生评估,我通过查找学生评估的最大ID来获得最后的学生评估,

所以我终于得到了所有学生的最后一份学生评估数据。

有没有办法直接在初始列表中执行此操作?

我考虑了按学生ID分组结果的方法,并选择了studentassessmentid的最大值,例如

group x.StudentAssessmentId by x.StudentId
select new {x.Key, x.Max()}

通过这种方式,我会在那里找到学生最后的学生成绩,这是我想要的,但这只会给我学生评估ID,同时我还想要其他数据,如AssessmentName,SubmittedDate等。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

group x.StudentAssessmentId     
by new {
        x.StudentId, 
        x.AssessmentName,
        x.SubmittedDate } 
into g
select new 
{
  g.Key.StudentId, 
  g.Key.AssessmentName, 
  g.Key.SubmittedDate,
  g.Max(),
}