c# - Web API 中的 LINQ 时间减法

标签 c# mysql linq rest visual-studio-2015

我使用“MySQL”创建了一个“WEB API”。现在我在 API 的 URL 中传递一个 序列号 和一个 日期时间 并得到预期的结果。现在我想做的是,每当发送请求时。所有记录都在 timespan10 分钟 内显示。即如果发送时间是 10/10/2017T3:15:00 那么显示的数据将是 +5 和 -5 分钟,即 3:10:003: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/

相关文章:

c# - LINQ 左连接、分组依据和计数生成错误结果

c# - 第三方类的 TypeConverter 属性

c# - 从数据表中获取一组 ID(值)

java - 在 Spring Boot JPA 中插入数据并获取 ID

php - 查询日期中的月、日、年

c# - 使用 linq 2 实体检查 where 子句的两个条件

c# - 来自网站的每日电子邮件提醒

c# - DropDownList 未在 ASP.NET MVC 中填充正确的值

php - 在 PHP 中循环复选框

c# - 按动态属性过滤