11

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

所有其他 DateTime 方法在哪里?

我必须将 DateTime 转换为 Convert.ToDateTime 吗?字段返回?

(DateTime) 和 (DateTime) 有什么区别?

4

4 回答 4

16

如果DateTime?你的意思是 a Nullable<DateTime>,那么你可以通过属性获取DateTime值。DateTime?.Value

于 2008-10-04T03:08:20.350 回答
9

在 SQL 中,DateTimes 允许为空。在 C# 中,日期时间不能为空。您可以阅读一些关于可空值类型的信息。由于值类型变量不能为空,因此创建了一个泛型类来处理这种情况。它被称为 Nullable<>,通常在类型后面加上问号。

为了使用这些值,您需要检查 .HasValue 属性。它是一个布尔值,它知道对象中是否有值或者它是否为空。一旦您检查了 .HasValue 属性是否为真,您就可以安全地使用 .Value 属性。.Value 属性的类型为 DateTime。

于 2008-10-04T03:27:17.910 回答
2

在 SQL 中,您将 DateTime 字段设置为 Allow Null。然后在 LINQ 中,当您要访问该字段时,.NET 不知道该字段是否真的是一个日期,这就是为什么您必须在任何日期方法可供您使用之前使用 Convert.ToDateTime() 的原因。

如果该字段将始终包含日期,请将数据库列设置为 NOT NULL,您应该没问题。

于 2008-10-04T03:45:42.117 回答
0

除了命名空间冲突,我知道 SQL 的日期时间与 C# 日期时间有不同的纪元(因此有效日期范围也不同)。

尝试将 a 发送new DateTime()到存储过程,看看我的意思。

于 2008-10-04T03:03:14.027 回答