web-dev-qa-db-fra.com

Meilleur moyen de vérifier si une table de données contient une valeur nulle

quel est le meilleur moyen de vérifier si une table de données a une valeur nulle?

La plupart du temps dans notre scénario, une colonne aura toutes les valeurs nulles.

(Ce datatable est retourné par une application tierce - nous essayons de mettre une validation avant que notre application ne traite la table de données)

81
Ananth

Essayez de comparer la valeur de la colonne à la valeur DBNull.Value pour filtrer et gérer les valeurs NULL comme bon vous semble.

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

Plus d'informations sur la classe DBNull


Si vous voulez vérifier s'il existe une valeur null dans la table, vous pouvez utiliser cette méthode:

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

qui vous permettra d'écrire ceci:

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

Vous pouvez lancer en boucle les lignes et les colonnes, en vérifiant la présence de valeurs NULL, en vérifiant s'il existe une valeur NULL avec une valeur booléenne, puis en vérifiant si la table a été parcourue en boucle et traitée.

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

Vous pouvez également sortir de la boucle foreach avec une instruction break, par exemple.

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

Pour sauvegarder en boucle dans le reste de la table.

10
StuperUser

Je vais faire comme ...

(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
1
DataTable dt = new DataTable();
        foreach (DataRow dr in dt.Rows)
        {
            if (dr["Column_Name"] == DBNull.Value)
            {
                //Do something
            }
            else
            {
                //Do something
            }
        }
0
Sush

Vous pouvez utiliser une valeur nulle, vide, espace, etc. à l'aide de LinQ Utiliser la requête suivante

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

Ici, remplacez Nom de la colonne par le nom de la colonne de la table et "" votre élément de recherche dans le code ci-dessus recherche une valeur nulle.

0
Sandy Sing