100 votes

La meilleure façon de vérifier si un Tableau de Données a une valeur null dans il

quelle est la meilleure façon de vérifier si un Tableau de Données a une valeur null dans tout ça ?

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

(Ce datatable est retourné par une application 3ème partie - nous essayons de mettre un valiadation avant notre processus de demande de la table de données)

185voto

hunter Points 33850

Essayez de comparer la valeur de la colonne à l' DBNull.Value de la valeur de filtre et de gérer les valeurs null de quelque façon que vous voyez l'ajustement.

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

Plus d'informations sur le DBNull classe


Si vous voulez vérifier si une valeur null existe 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;
}

ce qui vous permettra d'écrire ceci:

table.HasNull();

23voto

zavaz Points 492
foreach(DataRow row in dataTable.Rows)
{
    if(row.IsNull("myColumn"))
        throw new Exception("Empty value!")
}

13voto

StuperUser Points 5514

Vous pouvez faire une boucle de jeter les lignes et les colonnes, de vérifier les valeurs null, garder la trace de la présence d'un nul avec un bool, puis vérifier après une boucle dans le tableau et le gérer.

//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 par une instruction break par exemple

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

Pour enregistrer une boucle dans le reste de la table.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X