gpt4 book ai didi

c# - 可空对象必须有一个值#2

转载 作者:太空狗 更新时间:2023-10-29 22:11:07 28 4
gpt4 key购买 nike

我正在尝试重用我一直使用的相同代码,但现在遇到错误。

我正在遍历各种用户表,并在其中执行以下操作:

DateTime dcdt = (DateTime)u.DateCreated;
DateTime lldt = (DateTime)u.LastLogon;
userRow["DateCreated"] = dcdt.ToShortDateString();

在循环中。我收到错误:

System.InvalidOperationException: Nullable object must have a value.

错误突出显示“lldt”行,而不是第一个出现的“dcdt”。这本身就很奇怪。检查数据库中的这两个字段“允许空值”。它们都可以为空,也可以都不为空。

这两个值都列为DateTime?通过智能感知类型。

我不明白为什么 ASP.NET 拒绝让我为空日期输出空白。如果它为空/null,那么逻辑上会建议 ASP.NET 应该不打印任何内容。

我还应该如何输出空日期?我尝试添加 if 语句以防止尝试强制转换 null DateTimes,但这没有帮助,没有任何意义。

最佳答案

如您所说,u.LastLogon 的数据类型是DateTime?。这意味着它可能有也可能没有值(value)。通过转换为 DateTime,您需要它具有一个值。在这种情况下,它不会。

根据您要对其执行的操作,您可能需要检查 HasValue 属性:

userRow["LastLogon"] = u.LastLogin.HasValue ? 
(object) u.LastLogin.ToShortDateString() : DBNull.Value;

如果你的数据库 LastLogon 列是 DateTime 类型,那么你应该可以这样做:

userRow["LastLogon"] = u.LastLogin.HasValue ? 
(object) u.LastLogin.Value : DBNull.Value;

关于c# - 可空对象必须有一个值#2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749164/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com