You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET 6 Razor Pages中DateOnly/TimeOnly对象的查询问题

ASP.NET 6.0 Razor Pages中DateOnly/TimeOnly属性的查询实现

问题场景

我是ASP.NET新手,正在用ASP.NET 6.0 Razor Pages开发项目。模型TestModel包含Name、可空的DateOnly? Date和TimeOnly? Time属性。表单支持多条件搜索,需要根据用户输入的日期(格式如2023-09-03)或时间(格式如01:39:20)执行查询(与数据库存储格式一致)。已经实现了Name的查询逻辑,但尝试过将日期作为字符串匹配、使用Date.Equals、直接访问Date.Value等方法均无效,最终找到了可行的解决方案。

解决方案代码

日期查询

将用户输入的日期字符串转换为DateOnly类型后,结合空值判断进行匹配:

// DateStr为用户输入的日期字符串(格式示例:"2023-09-03")
DateOnly dateOnly = DateOnly.Parse(DateStr);
TestQuery = TestQuery.Where(s => s.Date != null && s.Date.Value.Equals(dateOnly));

时间查询

将用户输入的时间字符串转换为TimeOnly类型后,结合空值判断进行匹配:

// TimeStr为用户输入的时间字符串(格式示例:"01:39:20")
TimeOnly timeOnly = TimeOnly.Parse(TimeStr);
TestQuery = TestQuery.Where(s => s.Time != null && s.Time.Value.Equals(timeOnly));

关键说明

  1. 类型匹配:必须将用户输入的字符串转换为对应DateOnly/TimeOnly类型,直接用字符串和数据库中的强类型字段匹配会导致EF Core无法生成正确的SQL查询,从而匹配失败。
  2. 空值安全:因为Date和Time是可空属性,查询时必须先判断s.Date != null/s.Time != null,再访问Value属性,避免空引用异常。

内容的提问来源于stack exchange,提问作者Archana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:31:18