我有一个包含数据的数据表(客户地址)。在某些情况下,列ADDR3没有值,列ADDR2没有。我正在尝试检查ADDR3的值,如果它不包含值,我想将ADDR2中的值复制到ADDR3,然后将ADDR2清空。我试图使用下面的代码,但它无法正常工作。我在'if'语句后面放了一个断点,但程序永远不会中断。但是,我知道很多行都有空的ADDR3字段。谁能告诉我我做错了什么?
foreach (DataRow row in dataSet11.DataTable1.Rows)
{
object value = row["ADDR3"];
if (value == DBNull.Value)
{
row["ADDR3"] = row["ADDR2"];
row["ADDR2"] = " ";
}
}
答案 0 :(得分:2)
您的row["ADDR3"]
值可能永远不等于DbNull.Value
。例如,通过Web服务传输的数据表就是这种情况(由于XML转换,将会有空字符串而不是空字符串。)
在if
之前设置一个断点并准确找到值。您可以尝试检查row["ADDR3"] == null
或string.IsNullOrWhiteSpace(row["ADDR3"].ToString())
答案 1 :(得分:0)
您是否尝试将该值与null(而不是DBNull.Value)进行比较?我相信DBNull.Value对于某些数据库对象是独占的,并且一旦读入数据集/数据表就不会出现。
答案 2 :(得分:0)
试试这个:
foreach (DataRow row in dataSet11.DataTable1.Rows)
{
if (
row.IsNull("ADDR3") // True if the value is null
||
String.IsNullOrWhitespace(row["ADDR3"]) // True if the value is "", " ", etc.
)
{
row["ADDR3"] = row["ADDR2"];
row["ADDR2"] = " ";
}
}