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

时间:2012-03-22 15:13:35

标签: c# visual-studio-2010 datatable datacolumn

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

3 个答案:

答案 0 :(得分:2)

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

if之前设置一个断点并准确找到值。您可以尝试检查row["ADDR3"] == nullstring.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"] = " ";
    }
}