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