DataTable空日期判断无效:if语句排除null为何仍报错?
问题原因与解决方法
判断失效的核心原因
DataTable中存储的空值不是C#常规的null,而是DBNull.Value。你用dt.Rows[0][0] != null判断时,因为实际值是DBNull.Value而非null,所以这个判断会返回true,导致后续的转换代码执行,最终报错。
额外的逻辑错误
你的foreach循环遍历的是dt.Rows里的每一行,但循环内始终取dt.Rows[0][0](第一行第一列的值),这和遍历的逻辑矛盾,应该使用当前循环的row对象来取值。
修正后的代码示例
foreach (DataRow row in dt.Rows) { if (row[0] != DBNull.Value) { oosDate = Convert.ToDateTime(row[0]); } }
或者用更直观的DataRow.IsNull()方法:
foreach (DataRow row in dt.Rows) { if (!row.IsNull(0)) { oosDate = Convert.ToDateTime(row[0]); } }
内容的提问来源于stack exchange,提问作者Yippiekaiaii
相关产品推荐
相关产品推荐

