【发布时间】:2008-10-04 02:58:23
【问题描述】:
当我使用具有 DateTime 字段的 LINQ 检索记录时,只有 ToString() 可用。
其他 DateTime 方法在哪里?
我必须将 DateTime 转换为 Convert.ToDateTime 吗?字段返回?
(日期时间)和(日期时间)有什么区别?
【问题讨论】:
当我使用具有 DateTime 字段的 LINQ 检索记录时,只有 ToString() 可用。
其他 DateTime 方法在哪里?
我必须将 DateTime 转换为 Convert.ToDateTime 吗?字段返回?
(日期时间)和(日期时间)有什么区别?
【问题讨论】:
如果 DateTime? 你的意思是 Nullable<DateTime>,那么你可以通过 DateTime?.Value 属性获取 DateTime 值。 p>
【讨论】:
在 SQL 中,DateTimes 允许为空。在 C# 中,日期时间不能为空。您可以阅读一些关于nullable value types 的信息。由于值类型变量不能为空,因此创建了一个泛型类来处理这种情况。它被称为 Nullable,通常在类型后面加上问号。
为了使用这些值,您需要检查 .HasValue 属性。它是一个布尔值,它知道对象中是否有值或者它是否为空。一旦您检查了 .HasValue 属性是否为真,您就可以安全地使用 .Value 属性。 .Value 属性的类型为 DateTime。
【讨论】:
在 SQL 中,您将 DateTime 字段设置为 Allow Null。然后在 LINQ 中,当您要访问该字段时,.NET 不知道该字段是否真的是一个日期,这就是为什么您必须在任何日期方法可供您使用之前使用 Convert.ToDateTime() 的原因。
如果该字段将始终包含日期,请将数据库列设置为 NOT NULL,这样就可以了。
【讨论】:
除了命名空间冲突之外,我知道 SQL 的日期时间与 C# 日期时间有不同的纪元(因此有效日期范围也不同)。
尝试将new DateTime() 发送到存储过程,看看我的意思。
【讨论】: