Лучший способ проверить, если таблица данных имеет нулевое значение в нем
каков наилучший способ проверить, имеет ли таблица данных нулевое значение в ней ?
большую часть времени в нашем примере, одна колонка будет иметь все нулевые значения.
(этот datatable возвращается сторонним приложением - мы пытаемся поставить valiadation перед нашим приложением обрабатывает таблицу данных)
5 ответов:
попробуйте сравнить значение столбца
DBNull.Value
значение для фильтрации и управления нулевыми значениями любым способом, который вы считаете нужным.foreach(DataRow row in table.Rows) { object value = row["ColumnName"]; if (value == DBNull.Value) // do something else // do something else }
дополнительная информация о классе DBNull
если вы хотите проверить, существует ли значение null в таблице, вы можете использовать этот метод:
public static bool HasNull(this DataTable table) { foreach (DataColumn column in table.Columns) { if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column))) return true; } return false; }
, который позволит вам писать так:
table.HasNull();
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
вы можете циклически перебрасывать строки и столбцы, проверять наличие нулей, отслеживать, есть ли null с bool, а затем проверять его после циклического перебора таблицы и обрабатывать его.
//your DataTable, replace with table get code DataTable table = new DataTable(); bool tableHasNull = false; foreach (DataRow row in table.Rows) { foreach (DataColumn col in table.Columns) { //test for null here if (row[col] == DBNull.Value) { tableHasNull = true; } } } if (tableHasNull) { //handle null in table }
вы также можете выйти из цикла foreach с оператором break, например
//test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; }
чтобы сохранить цикл через остальную часть таблицы.