【问题标题】:LINQ time subtraction in web apiWeb api中的LINQ时间减法
【发布时间】:2017-10-10 10:19:18
【问题描述】:

我使用“MySQL”创建了一个“WEB API”。现在我在 API 的 URL 中传递了一个 serial number 和一个 date time 并得到了预期的结果。现在我想做的是,无论何时发送请求。所有记录都显示在timespan10 minutes 内。即如果发送的时间是10/10/2017T3:15:00,那么显示的数据将是+5 和-5 分钟,即在3:10:003:20:00 之间,前提是日期应该相同。

可以用time.Subtract(...)方法减去时间,但是我真的不知道如何减去和加上时间然后得到结果。

我的控制器代码看起来像

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中发送的日期时间

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    如果它总是在提供的日期之前和之后 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 分钟,您必须编译并重新部署您的应用程序,这很糟糕。所以请记住这一点。

    【讨论】:

    • 这就像一个魅力。是的,我知道,我已经和其他人讨论过这个问题,但他们说要保持这种状态。所以我想如果其他人对此感到满意,我也会:)
    • 开发者第一课:不要相信别人 :)
    • 只是想一想,API 将使用androidphp 的客户端工作,所以您建议在客户端做出决定吗?
    • 决定是指日期计算吗?处理日期/时间总是很棘手.. 这真的取决于需要。我会给出的一个建议是,如果您还没有使用.. 始终使用 UTC 日期。特别是在您无法真正控制用户来自何处的应用程序上。这值得一读:blog.mojotech.com/the-complexity-of-time-data-programming
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2012-12-03
    相关资源
    最近更新 更多