当我使用具有DateTime字段的LINQ检索记录时,只有ToString()可用。
所有其他DateTime方法在哪里?
我必须将Date.ToDateTime转换为DateTime? Field返回?
(DateTime)和(DateTime?)
之间有什么区别?答案 0 :(得分:16)
如果 DateTime?
指的是Nullable<DateTime>
,那么您可以通过DateTime
{{1}获取DateTime?.
值}} 属性。
答案 1 :(得分:9)
在SQL中,允许DateTimes为null。在C#DateTimes中不能为null。你可以阅读一点nullable value types。由于值类型变量不能为null,因此创建了一个泛型类来处理这种情况。它被称为Nullable&lt;&gt;并且通常在类型后面写一个问号。
要使用这些值,您需要检查.HasValue属性。它是一个布尔值,它知道对象中是否存在值,或者它是否为空。检查.HasValue属性为true后,可以安全地使用.Value属性。 .Value属性的类型为DateTime。
答案 2 :(得分:2)
在SQL中,您将DateTime字段设置为Allow Null。然后在LINQ中,当你要访问该字段时,.NET不知道该字段是否真的是一个日期,这就是为什么你必须在任何日期方法可用之前转换Convert.ToDateTime()。
如果该字段始终包含日期,请将数据库列设置为NOT NULL,您应该没问题。
答案 3 :(得分:0)
除了名称空间冲突之外,我知道SQL的日期时间与C#datetime有不同的时期(因此有效日期范围不同)。
尝试将new DateTime()
发送到存储过程并查看我的意思。