¿cuál es la mejor manera de comprobar si una Tabla de Datos tiene un valor nulo en ella ?

La mayoría del tiempo en nuestro escenario, una columna se tienen todos los valores null.

(Esta tabla de datos es devuelto por una 3ª parte de la aplicación que estamos tratando de poner un valiadation antes de que nuestros procesos de aplicación de la tabla de datos)

InformationsquelleAutor Ananth | 2011-01-05

6 Comentarios

  1. 150

    Intente comparar el valor de la columna a la DBNull.Value valor para filtrar y gestionar los valores null en cualquier forma que se 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 acerca de la clase DBNull


    Si quieres comprobar si un valor null existe en la tabla se 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 le deje escribir esto:

    table.HasNull();
    • ¿Cuál es la mejor práctica para donde este método de extensión debe ir?
    • Por lo general crear una carpeta «Extensiones» en algunos comunes de la biblioteca o en mi DAL. Crear un archivo llamado «DataTableExtensions.cs» y agregar un método. Lo siguiente que acaba de agregar «utilizar Nombre.Espacio.Extensiones» a tu cs archivos y tener acceso a todos los métodos de extensión definida.
    • Usted puede ahora utilizar table.AsEnumerable() en lugar de table.Rows.OfType<DataRow>()
  2. 23
    foreach(DataRow row in dataTable.Rows)
    {
        if(row.IsNull("myColumn"))
            throw new Exception("Empty value!")
    }
  3. 10

    Puede recorrer en lanzar las filas y las columnas, la comprobación de valores nulos, manteniendo un seguimiento de si hay un nulo con un bool, verificación después de recorrer a través de la mesa y manejarla.

    //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 sentencia break por ejemplo,

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

    Para salvar a recorrer el resto de la tabla.

  4. 0
    DataTable dt = new DataTable();
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["Column_Name"] == DBNull.Value)
                {
                    //Do something
                }
                else
                {
                    //Do something
                }
            }
    • Mientras que este código puede responder a la pregunta, es mejor explicar cómo resolver el problema y proporcionar el código de ejemplo o referencia. Código sólo respuestas puede ser confuso y la falta de contexto.
  5. 0

    Puede nulo/en blanco/Etc valor de uso de LinQ
    Utilizar La Siguiente Consulta

       var BlankValueRows = (from dr1 in Dt.AsEnumerable()
                                      where dr1["Columnname"].ToString() == ""
                                      || dr1["Columnname"].ToString() == ""
                                       || dr1["Columnname"].ToString() == ""
                                      select Columnname);

    Aquí Reemplazar Columnname con el nombre de columna de tabla y «» su elemento de búsqueda en el código anterior estamos buscando valor null.

Dejar respuesta

Please enter your comment!
Please enter your name here