该值 (row[10]) 来自 DataRow 对象,来自 T-SQL 中的 SQL 结果集。我相信它有一个“对象”类型。在我的数据库中,该特定记录的该字段的值为 NULL,但它在结果集中返回空字符串,而不是空值。我想解决根本问题并让我的结果集返回 NULL 而不是空字符串,但如果这是不可能的,那么使此代码更高效就可以了 - 意思是第一个片段,因为它适用于所有 3 个片段案例。
当 row[10].ToString() 等于空字符串、null 或 DateTime 格式时,此方法有效,但我想缩短它。这是我目前的解决方法。
正确的方法是:
DateTime? temp = null; //this is fine
var indexOfYourColumn = reader.GetOrdinal("columnName");//not necessary but makes iterating faster
while (reader.Read())
{
temp = reader[indexOfYourColumn] != DBNull.Value ? (DateTime?) null : DateTime.Parse(reader[indexOfYourColumn].ToString())
}
为什么?你不能对 null 执行 .ToString() 。然后你需要将喜欢投射到喜欢。因此可以为空的 DateTime 为可以为空的 DateTime。
这个问题很久以前就被问到了。但接受的答案并不正确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)