我有一个数据表,其中包含数据(客户地址)。在某些情况下,列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"] = " ";
}
}
您的row["ADDR3"]
值可能永远不等于DbNull.Value
。例如,通过web服务传输的数据表通常就是这种情况(由于XML转换,将出现空字符串而不是null)。
在if
之前放置一个断点,并准确地找到值。您可以尝试检查row["ADDR3"] == null
或string.IsNullOrWhiteSpace(row["ADDR3"].ToString())
您是否尝试将值与null(而不是DBNull.value)进行比较?我相信DBNull.Value对某些数据库对象是独占的,一旦读取到数据集/数据表中就不会出现。
试试这个:
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"] = " ";
}
}