我似乎无法检查数据表的特定列中的值。为什么?



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

相关内容

  • 没有找到相关文章

最新更新