Expression.GreaterThan在一个操作数为可为空类型,另一个操作数为非可为空类型时会失败。

17 浏览
0 Comments

Expression.GreaterThan在一个操作数为可为空类型,另一个操作数为非可为空类型时会失败。

我正在创建一些动态的LINQ,遇到了以下异常问题:

二进制运算符 GreaterThanOrEqual

在类型

'System.Nullable`1[System.DateTime]'

和 'System.DateTime'

上没有定义

我知道问题出在哪里,因为我的字段类型是可空的,而我传入的是 DateTime.Now。

为了解决这个问题,我尝试了以下方法:

System.Nullable now;
now = DateTime.Now;

但是结果的类型仍然是一个非可空对象,因此仍然会出现上述异常。

有什么建议吗?

更新:为了更清楚,当设置 now 变量时,它变成了一个非可空类型,而不是可空的 DateTime,所以匹配会引发异常。

更新:实际的代码可以在 CodePlex 项目中看到:

http://webquarters.codeplex.com/SourceControl/changeset/view/36529#574700

有问题的代码位于第145行

fExp = Expression.GreaterThanOrEqual(fExpLeft, fExpRight);

0