编写 Linq To Entity 以按最新日期和 unitEd 检索行

Write LinqToEntity to retrive rows by latest date and unitId

我在我的网络 api 项目上工作,我使用 entity framework 6. 我需要编写 LinqToEntity 以按最新日期和 unitId 检索行。

例如:

这是我的 table:

 Id|UnitId  | NumberP | DateMeasure
  1|14      |num1     |2008-01-20 13:10:22.000
  2|32      |num2     |2010-05-20 13:11:38.000
  3|48      |num3     |2011-08-20 13:10:18.000
  4|85      |num4     |2015-11-20 14:10:22.000 

  5|14      |num5     |2010-05-20 13:11:38.000
  6|32      |num6     |2010-05-20 13:12:38.000
  7|85      |num7     |2014-11-20 17:20:32.000

这里是我需要使用 LinqToEntity 从 table 获取的记录:

 Id|UnitId  | NumberP | DateMeasure
  3|48      |num3     |2011-08-20 13:10:18.000
  4|85      |num4     |2015-11-20 14:10:22.000 
  5|14      |num5     |2010-05-20 13:11:38.000
  6|32      |num2     |2010-05-20 13:12:38.000

这是我尝试过的:

  var t2 = from s in unitOfWork.SensorsMeasure.GetAll()
                 group s by s.SensorUnitId into g 
                 select new
                 {


                 };

分组后如何按日期排序?

如何创建 LinqToEntity 查询以获得所需的结果?

您可以使用let clause获取您感兴趣的每个组的元素:

var t2 = from s in unitOfWork.SensorsMeasure.GetAll()
         group s by s.SensorUnitId into g
         let latest = g.OrderByDescending(s => s.DateMeasure).FirstOrDefault() 
         select new
         {
             UnitId = g.Key,
             NumberP = latest.NumberP,
             DateMeasure = latest.DateMeasure
         };