Я не могу проверить значение в определенном столбце данных.Зачем? - PullRequest
0 голосов
/ 22 марта 2012

У меня есть дата с данными в нем (адреса клиентов). В некоторых случаях столбец 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 ]

2 голосов
/ 22 марта 2012

Вероятно, что ваше значение row["ADDR3"] НИКОГДА не равно DbNull.Value. Это часто имеет место, например, для таблиц данных, которые были переданы через веб-службу (из-за преобразований XML будут пустые строки вместо нулей).

Поставьте точку останова ДО if и найдите точно, какое это значение. Вы можете попробовать проверить row["ADDR3"] == null или string.IsNullOrWhiteSpace(row["ADDR3"].ToString())

0 голосов
/ 22 марта 2012

Попробуйте это:

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"] = " ";
    }
}
0 голосов
/ 22 марта 2012

Вы пытались сравнить значение со значением NULL (а не с DBNull.Value)? Я полагаю, что DBNull.Value является эксклюзивным для определенных объектов базы данных и не отображается после чтения в набор данных / таблицу данных.

...