как лучше всего проверить, есть ли в таблице данных нулевое значение?
В большинстве случаев в нашем сценарии один столбец будет иметь все нулевые значения.
(Эта таблица данных возвращается сторонним приложением - мы пытаемся провести проверку до того, как наше приложение обработает таблицу данных)
Ответы:
Попробуйте сравнить значение столбца со
DBNull.Value
значением для фильтрации и управления нулевыми значениями любым удобным для вас способом.foreach(DataRow row in table.Rows) { object value = row["ColumnName"]; if (value == DBNull.Value) // do something else // do something else }
Подробнее о классе DBNull
Если вы хотите проверить, существует ли в таблице нулевое значение, вы можете использовать этот метод:
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.AsEnumerable()
вместоtable.Rows.OfType<DataRow>()
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
источник
Вы можете в цикле генерировать строки и столбцы, проверяя наличие нулей, отслеживая, есть ли нуль с помощью 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; }
Чтобы избежать перебора остальной части таблицы.
источник
Я сделаю как ....
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
источник
Вы можете указать значение null / blank / space Etc, используя LinQ Использовать следующий запрос
var BlankValueRows = (from dr1 in Dt.AsEnumerable() where dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" select Columnname);
Здесь замените Columnname именем столбца таблицы и "" вашего элемента поиска в приведенном выше коде мы ищем нулевое значение.
источник
DataTable dt = new DataTable(); foreach (DataRow dr in dt.Rows) { if (dr["Column_Name"] == DBNull.Value) { //Do something } else { //Do something } }
источник