我使用“MySQL”创建了一个“WEB API”。现在我在 API 的 URL 中传递一个 序列号
和一个 日期时间
并得到预期的结果。现在我想做的是,每当发送请求时。所有记录都在 timespan
的 10 分钟
内显示。即如果发送时间是 10/10/2017T3:15:00
那么显示的数据将是 +5 和 -5 分钟,即 3:10:00
到3:20:00
提供的日期应该相同。
减去时间可以用time.Subtract(...)
方法,但我真的不知道如何减去和加上时间然后得到结果。
我的 Controller 代码看起来像
public HttpResponseMessage GetByMsn(string msn, DateTime dt)
{
try
{
return Request.CreateResponse(HttpStatusCode.Found, medEntitites.tj_xhqd.Where(m=>(m.zdjh == msn)).Where(m=> (m.sjsj >= dt)).Select(m=> new { m.zdjh , m.sjsj, m.xhqd }).Distinct());
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
注意
时间的加减取决于URL中发送的日期时间
如有任何帮助,我们将不胜感激。
最佳答案
如果总是在提供的日期前后 5 分钟,只需使用 AddMinutes 添加/删除它。像这样:
public HttpResponseMessage GetByMsn(string msn, DateTime dt)
{
try
{
var before = dt.AddMinutes(-5);
var after = dt.AddMinutes(5);
var result = medEntitites.tj_xhqd
.Where(m =>
m.zdjh == msn &&
m.sjsj >= before &&
m.sjsj <= after)
.Select(m=> new { m.zdjh , m.sjsj, m.xhqd }).Distinct());
return Request.CreateResponse(HttpStatusCode.Found, result);
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
注意:不过,我不会在实际应用程序中硬编码 5 分钟。通常这个值来自应用程序的某种配置。如果你硬编码这样的值,明天需求从 5 分钟变为 10 分钟,你必须编译并重新部署你的应用程序,这很糟糕。所以请记住这一点。
关于c# - Web API 中的 LINQ 时间减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664291/