LINQ To SQL 处理 DateTime? 类型

 

例子: 搜索栏含有最后扫描时间的日期(DateTime?)与多个其他条件(String)

现在需要写一个查询 : 查询符合最后扫描的日期的查询

 

搜索结果

 

 以上是使用LINQ To Object 编写搜索的结果;以下试试使用 LINQ To SQL

 

当搜索条件中最后扫描时间有值时,运行正常,查询到一条结果。

但当搜索条件中不填写最后扫描时间时,运行则报错了。

 

照理如果没有填写时间条件的话 则满足了 || 前的条件 就不会走或后面的逻辑。

 最终我们怀疑是 Linq To Object 中对 ||  的正式运行时无论怎样都会运行 || 前后的条件, 导致找到了后面空值的.Date发生了错误。

 

 

对于搜索可空条件 我们会做一个转换, 转成不可空的 SqlDateTime 的最小值或最大值

 

 

posted on 2017-01-10 10:36  Howesdomo  阅读(2020)  评论(0编辑  收藏  举报