[Route("api/sensors/{id}/{date}/Measurements")]
public IEnumerable<Measurement> GetMeasurements(int id, DateTime date)//date == "11:01:2016 00:00:00"
{
return _unitOfWork.MeasurementRepository.Get(orderBy: e => e.Where(ex => ex.SensorId == id).Where(a => a.Time == date).OrderBy(tx => tx.Time));
//a.Time = 11:01:2016 00:00:00, ..., 11:01:2016 00:15:00, ...,11:01:2016 00:30:00, ...,11:01:2016 00:45:00, ...
}
我必须返回搜索日期的所有测量值(日期时间日期),但我不知道如何在没有时间的情况下比较两个日期时间...
答案 0 :(得分:2)
我之前也遇到过这个问题。幸运的是,有一个相当简单的解决方案。
<h3>Latest Posts</h3>
{%for post in posts%}
<a href=""><h4>{{post.title}}</h4></a>
{% endfor %}
结构只提供DateTime
属性。
物业价值
键入:System.DateTime
与此实例具有相同日期的新对象,时间值设置为午夜12:00:00(00:00:00) https://msdn.microsoft.com/en-us/library/system.datetime.date(v=vs.110).aspx
这意味着您可以简单地执行此操作
Date
答案 1 :(得分:0)
只需使用Date
的{{1}}属性即可。这个属性并不完全忽略时间,但会假设时间是午夜。
答案 2 :(得分:0)
你可以这样做
.Where(a => a.Time >= date.From() && a.Time <= date.To())
使用辅助方法
public static DateTime From(this DateTime value)
{
return new DateTime((value.Year, value.Month, value.Day);
}
public static DateTime To(this DateTime value)
{
return new DateTime(value.Year, value.Month, value.Day, 23, 59, 59);
}
答案 3 :(得分:-1)
尝试使用EntityFunctions.TruncateTime
或在EF 6.0中将其替换为DbFunctions.TruncateTime
,然后将其与转换为短日期字符串(date.ToShortDateString()
)的已知日期进行比较。
所以:
[Route("api/sensors/{id}/{date}/Measurements")]
public IEnumerable<Measurement> GetMeasurements(int id, DateTime date)//date == "11:01:2016 00:00:00"
{
return _unitOfWork.MeasurementRepository.Get(orderBy: e =>
e.Where(ex => ex.SensorId == id).Where
(a => EntityFunctions.TruncateTime(a.Time) == date.ToShortDateString())
.OrderBy(tx => tx.Time));
}