2013-11-21 1 views
1

Какой лучший подход заменить все значения DBNull на 0 в datatable, не пройдя через все строки по коду. Я использую среду .NET 2.0.Заменить все значения null в datacolum на значение 0

Я стараюсь это:

_data_table.Columns(DataColumName).Expression = String.Format("ISNULL({0},0)", DataColumName) 

Но я получаю «ArgumentException» Невозможно установить выражение свойства из-за циклической ссылки в выражении. Я хотел бы избежать создания временного дублированного столбца;)

ответ

1

... без пробега по всем строкам по коду.

Просто поговорите о рядах; это 3 строки кода вершины:

string DataColumnName = ...; 
DataColumn col = table.Columns[DataColumnName]; 
foreach (DataRow row in table.Rows) if (row.IsNull(col)) row[col] = 0; 

Меньше, если вы сделаете это трудно читать. То, что вы сейчас пытаетесь сделать, не сработает. В дальнейшем вы можете установить значение по умолчанию.

Если это на самом деле идет из базы данных, обновить его в базу данных в одной базе набора операции:

update [table] set [column] = 0 where [column] is null 
+1

или в запросе: 'Select COALESCE (колонка, 0) в качестве столбца ОТ table' –

+0

Источник datatable предоставляется внешней функцией, и я не могу изменить. Если после get я установил значение по умолчанию, это будет установлено только в новых добавленных строках. – arturn

+0

@arturn да, только новые строки; до тех пор, * just loop * –

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