1

我有以下 LINQ 查询,但我想修改它,我想按 StaffId 分组,并只选择每个 StaffId 的 ObservationDate 为 Max 的那些记录。

from ob in db.TDTObservations.OfType<TDTSpeedObservation>()
select new
{
   Id = ob.ID,
   AcademicYearId = ob.Teachers.FirstOrDefault().Classes.FirstOrDefault().AcademicYearID,
   observationDate = ob.ObservationDate,
   schoolId = ob.Teachers.FirstOrDefault().Classes.FirstOrDefault().SchoolID,
   staffId=ob.Teachers.FirstOrDefault().ID
};
4

2 回答 2

1
var observations = 
    from ob in db.TDTObservations.OfType<TDTSpeedObservation>()
    select new  {
       Id = ob.ID,
       AcademicYearId = ob.Teachers.FirstOrDefault().Classes.FirstOrDefault().AcademicYearID,
       observationDate = ob.ObservationDate,
       schoolId = ob.Teachers.FirstOrDefault().Classes.FirstOrDefault().SchoolID,
       staffId=ob.Teachers.FirstOrDefault().ID
    };

var result = from o in observations
             group o by o.staffId into g
             select g.OrderByDescending(x => x.observationDate).First();
于 2013-03-21T11:09:51.253 回答
0

怎么样:在此您首先将您的条目(教师)按他们的 ID 分组,然后从每个组(grp)中选择具有最新 ObservationDate 的那个

var observations = from d in db.TDTObservations.OfType<TDTSpeedObservation>()
                   group d by d.Teachers.FirstOrDefault().ID into grp
                   select grp.OrderByDescending(g => g.ObservationDate).FirstOrDefault();
于 2016-05-30T09:50:37.343 回答