DateTime,DateTime?和LINQ

时间:2008-10-04 02:58:23

标签: .net linq datetime

当我使用具有DateTime字段的LINQ检索记录时,只有ToString()可用。

所有其他DateTime方法在哪里?

我必须将Date.ToDateTime转换为DateTime? Field返回?

(DateTime)和(DateTime?)

之间有什么区别?

4 个答案:

答案 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()发送到存储过程并查看我的意思。