c# - 实体框架 - Oracle - 使用 linq 比较可为空的 DateTime 不起作用
问题描述
我正在将实体框架与 Oracle 一起使用,并且我正在尝试使用 linq 比较可以为空的 DateTime 进行查询,但是当我进行此比较时,查询给出了错误的结果。
我在 PL/SQL Developer 中执行了等价的查询,得到了正确的结果。
这是我的代码
using (var context = new CorporativoContext())
{
context.Database.Log = Console.Write;
var parametro = (from p in context.PARAMETRO
join pv in context.PARAMETRO_VALOR on p.Id equals pv.Id
where p.Descricao == descricaoParametro && pv.InicioVigencia <= DateTime.Now && pv.FimVigencia == null
select pv).FirstOrDefault();
return parametro;
}
属性“FimVigencia”是可为空的 DateTime(DateTime?FimVigencia),当我将其与 null 进行比较时,查询结果不返回任何内容,但如果我删除此比较,查询会为我提供属性“FimVigencia”的值为 null 的对象。
谁能帮我?
解决方案
找到了解决方案。我会在这里为任何有同样问题的人发帖
我需要使用 DbFunctions.TruncateTime 来比较 null
这是我的代码:
(from p in _context.PARAMETRO
join pv in _context.PARAMETRO_VALOR on p.Id equals pv.Id
where p.Descricao == descricaoParametro && pv.InicioVigencia <= DateTime.Now &&
(DbFunctions.TruncateTime(pv.FimVigencia) == null || pv.FimVigencia >= DateTime.Now)
select pv).FirstOrDefault();
推荐阅读
- reactjs - react-spring 在过渡中显示生涩的动作
- spring-boot - 如何让 Linkedin OAuth 在 Spring Boot 中工作
- reactjs - 状态中的 React-Native 动态属性
- bash - 从包含冒号分隔符的文件创建 bash 关联数组
- nlp - 如何查找csv中两个文本列之间的相似性
- c - 删除未使用的数组时出现分段错误,有什么想法吗?
- android - 为框架 android 生成构建时缺少完整的 debug.jar 类
- android - Android更新资产文件夹中的数据库并将其复制到手机
- python - 如何获取数据框中特定案例的最后一个值
- loops - SWI Prolog foreach/2