我在获取传递给此变量的值时遇到问题。它来自excel文件(使用Aspose)为null,但DateTime不包括它。我将 DateTime?添加到变量中,但这没有帮助。我已经尝试了一些我知道的方法,但它们都没有为传入的null值工作。如果值为null,则它必须保持为null,数据库允许为null值。有人可以帮助我让这个工作吗?有没有更简单的方法来解决这个问题?
尝试1
EnterDate = Convert.ToDateTime(dr["EnterDate"]);
EnterDate = (EnterDate.HasValue) ? EnterDate : DateTime.Now;
尝试2
RepealedDate = (dr["RepealedDate"] == null) ? (DateTime?)null : Convert.ToDateTime(dr["RepealedDate"]);
答案 0 :(得分:1)
用这个替换你的第二次尝试:
DateTime? repealedDate = (dr["RepealedDate"] == null) ?
null : Convert.ToDateTime(dr["RepealedDate"]);
您无法将null转换为DateTime?
来解决问题,您必须将变量定义为类型DateTime?
。
答案 1 :(得分:0)
我无法在网上找到一个好的解决方案。所以我试着自己处理它。
我从Excel Sheet
获取数据作为字符串然后我控制它是否为空。如果我将其设置为null
,我将其转换为DateTime,如下所示。这可以避免我在Convert
函数中发生异常。
StartDate = dr[2].ToString().Trim();
if (StartDate != "")
r.Data.StartDate = Convert.ToDateTime(StartDate);
else
r.Data.StartDate = null;