2012-03-22 5 views
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"] = " "; 
       } 
      } 
+3

Почему бы вам не поставить точку останова * на * ваш оператор if и посмотреть, является ли 'значение' DBNull? –

+0

Да, я подумал об этом. Просто у меня есть несколько сотен строк, чтобы пройти до того, как я получу данные с нулевым значением в ADDR3. Но, если это мой единственный прибежище, я сделаю это. Но, насколько мой код идет, должен ли он работать? Может ли быть случай, когда он не является нулевым, а какое-то другое значение, например «»? – Kevin

+2

Щелкните правой кнопкой мыши на точке останова, нажмите «Фильтр ...» и выберите значение перед своим нулевым значением, чтобы предотвратить прохождение через сотни строк. – Oliver

ответ

2

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

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

+0

Вот и все! Это пробел, а не нуль. Спасибо! Как только таймер закончится, я отвечу. Еще раз спасибо! – Kevin

0

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

+0

Я попробую и посмотрю, что произойдет. Благодаря! – Kevin

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"] = " "; 
    } 
}