我有三个精度的图表。
每小时,
每30分钟,
每15分钟。
包含我的数据的表如下所示:
当我生成图表时,我从特殊的日期时间开始,例如从当前日期时间开始
例如。当我从18:00开始,每15分钟做一次手术,我需要这个时间的数据
18:00
17:45
1730
17:15
17:00

在我的数据表中,每3分钟最多有一个数据,所以当我想从17:15获取数据时,lambda查询返回空值,因为我只有17:13和17:16的数据。
所以我需要返回最接近我的数据时间的数据的查询。在上面的例子中,需要从17:16返回数据。
我尝试diffhours方法,但它在mysql上不起作用。我需要处理mysql和mssql的方法
我现在的方法是这样的:

var report = _reportRepository.FindBy(a => a.Fridge.FridgeIdentity == fridgeIdentity && a.CreatedDate.Year == fromTime.Year && a.CreatedDate.Month == fromTime.Month && a.CreatedDate.Day == fromTime.Day && a.CreatedDate.Hour == fromTime.Hour).FirstOrDefault();

但它只能精确到每小时。
谢谢你的帮助!

最佳答案

如果要获得最接近特定时间间隔的时间,请执行以下操作:

var fromTime = new DateTime(2016, 05, 20, 9, 0, 0);
var report = _reportRepository
             .OrderBy(m =>m.CreatedDate > fromTime
                             ? m.CreatedDate - fromTime
                             : fromTime - m.CreatedDate)
             .Take(1);

10-08 17:58