【问题标题】:Problem encounter while searching From and To dates in C# MVC在 C# MVC 中搜索 From 和 To 日期时遇到的问题
【发布时间】:2020-03-04 11:17:47
【问题描述】:

虽然我尝试按一个日期搜索 From: 2/27/2020 并将我的 Date to : 字段保持为空.. 我在 2020 年 2 月 27 日之后的第二天看到所有记录,所有记录都显示在这里。我只需要 2020 年 2 月 27 日的数据。 这是我的控制器

以下是我在输入日期后看到的结果:2/27/2020 我也正在获取今天日期的数据。

请帮我解决这个错误。

【问题讨论】:

  • 只检查 dateFrom 是否有值,而 dateTo 没有值。在这种情况下,设置 dateTo 等于 dateFrom 然后运行查询
  • 不,先生,您的这个想法在这里行不通。我看到的只是空白结果
  • 我认为您的代码很好,因为 UI 说 DateFrom 意味着用户希望从该日期开始检查所有这些记录,如果用户只想查看他需要放置的一个特定日期记录DateTo 字段中的日期值也是如此,否则,可以通过添加附加检查仅显示 DateFrom 记录,但用户将无法通过仅输入一个日期值来查看后续记录。
  • 如果您的数据库列还包含时间部分,那么 dataTo 应该是 dateFrom plus 1439 分钟,但可能你应该考虑@UmairAnwaar 的上述评论。
  • @HemantAcharya ASP.NET 是一个 Web 框架,它不查询任何内容。您使用的是什么 ORM,ORM 的查询在哪里? Get() 是什么? EF 或 NHibernate 中没有这种方法。

标签: c# asp.net asp.net-mvc model-view-controller


【解决方案1】:

如果您的客户需要此功能(客户总是赢),您可以通过像这样对过滤器逻辑稍作更改来做到这一点。

 (!waiterId.HasValue || x.OrderDetails.Any(y => y.WaiterId == waiterId && y.DataStatus ==(int)eDataStatus.Active)) && 
 (
    (dateFrom.HasValue && dateTo.HasValue && x.Date >= dateFrom && (x.Date) <= (dateTo) ) 
   || 
   ((dateFrom.HasValue && (x.Date) = (dateFrom))  || (dateTo.HasValue &&  (x.Date) = (dateTo)) ) 
 ) &&
 (!floorId.HasValue || x.Table.FloorId == floorId )&&

另外,如果数据库列中存在时间,请考虑@steve 注释,您需要将 DateTime 解析为过滤字段和数据库列的日期

作为参考,您可以使用System.Data.Entity.DbFunctions.TruncateTime()删除时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多