Expression.GreaterThan在一个操作数为可为空类型,另一个操作数为非可为空类型时会失败。
- 论坛
- Expression.GreaterThan在一个操作数为可为空类型,另一个操作数为非可为空类型时会失败。
17 浏览
Expression.GreaterThan在一个操作数为可为空类型,另一个操作数为非可为空类型时会失败。
我正在创建一些动态的LINQ,遇到了以下异常问题:
二进制运算符 GreaterThanOrEqual
在类型
'System.Nullable`1[System.DateTime]'
和 'System.DateTime'
上没有定义
我知道问题出在哪里,因为我的字段类型是可空的,而我传入的是 DateTime.Now。
为了解决这个问题,我尝试了以下方法:
System.Nullablenow; now = DateTime.Now;
但是结果的类型仍然是一个非可空对象,因此仍然会出现上述异常。
有什么建议吗?
更新:为了更清楚,当设置 now 变量时,它变成了一个非可空类型,而不是可空的 DateTime,所以匹配会引发异常。
更新:实际的代码可以在 CodePlex 项目中看到:
http://webquarters.codeplex.com/SourceControl/changeset/view/36529#574700
有问题的代码位于第145行
fExp = Expression.GreaterThanOrEqual(fExpLeft, fExpRight);