Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果只有一个表达式可为空,则Linq DateTime表达式不会进行比较_C#_Linq - Fatal编程技术网

C# 如果只有一个表达式可为空,则Linq DateTime表达式不会进行比较

C# 如果只有一个表达式可为空,则Linq DateTime表达式不会进行比较,c#,linq,C#,Linq,我得到了以下例外情况: 二元运算符大于或等于 未为类型定义 'System.Nullable'1[System.DateTime]' 和“System.DateTime” 我从一个类属性中得到左边的表达式,这个类属性是一个可为null的datetime变量,我的右边使用 Expression.Constant(new Nullable<DateTime>(DateTime.Now)) Expression.Constant(新的Nullable(DateTime.Now)) 然而

我得到了以下例外情况:

二元运算符大于或等于 未为类型定义 'System.Nullable'1[System.DateTime]' 和“System.DateTime”

我从一个类属性中得到左边的表达式,这个类属性是一个可为null的datetime变量,我的右边使用

Expression.Constant(new Nullable<DateTime>(DateTime.Now))
Expression.Constant(新的Nullable(DateTime.Now))

然而,尽管将右侧表达式显式设置为可空类型,但我仍然得到了上述异常。归根结底,可空类型是一个相当泄漏的抽象。当将日期时间分配给日期时间?时,它们工作得很好,但在进行比较时,事情会变得棘手,因为System.Nullable并不真正知道如何处理它们


DateTime之间没有隐式转换?DateTime,所以你需要做的是从nullable中获取一个实时的DateTime值来进行比较。最简单的方法是使用可为空的DateTime中的
GetValueOrDefault()
方法。如果该值不为null,则会给出该值;如果该值为null,则会给出默认的DateTime(我相信是
DateTime.MinValue
)。

Expression.Constant接受一个对象,因此在代码中会对参数进行装箱。装箱一个可为null的值实际上是装箱基础值(请参阅),因此Expression.Constant认为参数是DateTime而不是DateTime

你可以强制ConstantPression为DateTime吗?通过使用Expression.Constant的重载,该常量接受以下类型:

Expression.Constant(DateTime.Now, typeof(DateTime?))

你能发布更多的代码吗?