¿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 terceros; estamos tratando de realizar una validación antes de que nuestra aplicación procese la tabla de datos)
Respuestas:
Intente comparar el valor de la columna con el
DBNull.Value
valor para filtrar y administrar los valores nulos de la forma que considere adecuada.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<DataRow>().Any(r => r.IsNull(column))) return true; } return false; }
que te permitirá escribir esto:
fuente
table.AsEnumerable()
lugar detable.Rows.OfType<DataRow>()
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
fuente
Puede lanzar en bucle las filas y columnas, verificar si hay nulos, realizar un seguimiento de si hay un nulo con un bool, luego verificarlo después 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 bucle foreach con una declaración de interrupción, por ejemplo
//test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; }
Para evitar recorrer el resto de la tabla.
fuente
Haré como ...
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
fuente
Puede anular / dejar en blanco / espaciar el valor Etc utilizando LinQ Use Next Query
var BlankValueRows = (from dr1 in Dt.AsEnumerable() where dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" select Columnname);
Aquí reemplace el nombre de la columna con el nombre de la columna de la tabla y "" su elemento de búsqueda en el código anterior buscamos un valor nulo.
fuente
DataTable dt = new DataTable(); foreach (DataRow dr in dt.Rows) { if (dr["Column_Name"] == DBNull.Value) { //Do something } else { //Do something } }
fuente