0

我有一个包含数据的数据表(客户地址)。在某些情况下,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"] = " ";
                }
            }
4

3 回答 3

2

您的row["ADDR3"]价值可能永远不等于DbNull.Value. 例如,通过 Web 服务传输的数据表通常就是这种情况(由于 XML 转换,将出现空字符串而不是空值)。

在你之前放置一个断点if,并准确找到值是什么。您可以尝试检查row["ADDR3"] == nullstring.IsNullOrWhiteSpace(row["ADDR3"].ToString())

于 2012-03-22T15:18:05.503 回答
0

您是否尝试过将该值与 null(而不是 DBNull.Value)进行比较?我相信 DBNull.Value 是某些数据库对象独有的,并且一旦读入数据集/数据表就不会出现。

于 2012-03-22T15:16:45.517 回答
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"] = " ";
    }
}
于 2012-03-22T15:16:54.553 回答