La mejor forma de comprobar si una tabla de datos tiene un valor nulo en ella

¿Cuál es la mejor manera de verificar si una tabla de datos tiene un valor nulo?

La mayoría de las veces en nuestro escenario, una columna tendrá todos los valores nulos.

(Esta tabla de datos es devuelta por una aplicación de un tercero; estamos tratando de poner una validación antes de que nuestra aplicación procese la tabla de datos)

Intente comparar el valor de la columna con el valor DBNull.Value para filtrar y administrar los valores nulos de la manera que mejor le parezca.

 foreach(DataRow row in table.Rows) { object value = row["ColumnName"]; if (value == DBNull.Value) // do something else // do something else } 

Más información sobre la clase DBNull


Si desea verificar si existe un valor nulo en la tabla, puede usar este método:

 public static bool HasNull(this DataTable table) { foreach (DataColumn column in table.Columns) { if (table.Rows.OfType().Any(r => r.IsNull(column))) return true; } return false; } 

que te permitirá escribir esto:

 table.HasNull(); 
 foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") } 

Puede recorrer las filas y columnas, verificar nulos, realizar un seguimiento de si hay un nulo con un bool, y luego verificarlo luego de recorrer la tabla y manejarlo.

 //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 } 

También puede salir del ciclo foreach con una statement de interrupción, por ejemplo

 //test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; } 

Para guardar el bucle en el rest de la tabla.

Haré como …

 (!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))