2012-01-24 5 views
2

Итак, у меня есть файл с разделителями табуляции, который мне нужно вставить через sqlbulkinsert. У меня есть весь код, написанный и работающий должным образом, но когда я получаю значение, которому назначено целое или десятичное значение без введенного значения, мой код ломается, потому что назначение неверно (от нуля до десятичного значения) ... Как я могу справиться с этим?Как обрабатывать нулевые значения при присвоении datarow's для данных datatable

dataRow["variableName"] = splitString[IndexValue]; // decimal coming in blank because this column doesn't have a decimal assigned (and not required) 

Спасибо!

Редактировать: Я знаю, что могу проверить значение для null перед назначением, но предпочел бы не использовать проверку if, если есть другой способ сделать это.

Закончено с использованием тернарного оператора.

dataRow["variableName"] = (String.IsNullOrEmpty(splitString[IndexValue])) ? Convert.ToInt32(splitString) : 0; 
+0

Итак, 'splitString [IndexValue] == null' и' dataRow ["variableName"] 'хочет' De значение cimal'? – Yuck

+0

Разделяет массив объектов, возвращающий нуль по заданному индексу, массив строк, возвращающий string.Empty и т. Д.? –

+0

Да вам обоим. –

ответ

1

Выполните простую проверку перед присваиванием:

if (varT != null) 
//perform assignment 
else 

Изменить Vart на имя значение, которое вы проверяете против. Также вам нужно рассказать нам, что является нулевым, а что нетрудно сказать с содержанием вашего вопроса. Является ли splitString [IndexValue] null или datarow?

За свой комментарий Вы можете использовать условный оператор:

return varT != null ? varT : 1.0;

Или, как уже упоминалось вы можете использовать ?? оператор http://msdn.microsoft.com/en-us/library/ms173224.aspx

+0

@Yuck Я знаю, что это был псевдо-код: -p – JonH

+0

Да, я бы предпочел не делать этого, потому что у меня есть множество переменных, которые я передаю. .. надеялся на сокращенную версию. –

+0

@Sean, поэтому вы можете использовать условный оператор 'return varT! = Null? varT: 1.0; ' – JonH

0

Вы можете избежать этой проблемы с помощью следующего кода :

if (splitString[IndexValue] != null) 
    dataRow["variableName"] = splitString[IndexValue]; 
+0

Что делать, если splitString [IndexValue] является пустой строкой? –

+0

использование string.IsNullOrEmpty() – Servy

Смежные вопросы