Quelle est la meilleure façon de vérifier si une table de données contient une valeur nulle?
La plupart du temps dans notre scénario, une colonne aura toutes les valeurs nulles.
(Cette table de données est retournée par une application tierce - nous essayons de mettre une validation avant que notre application traite la table de données)
Réponses:
Essayez de comparer la valeur de la colonne à la
DBNull.Value
valeur pour filtrer et gérer les valeurs nulles de la manière qui vous convient.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 souhaitez vérifier si une valeur nulle existe dans le tableau, 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:
la source
table.AsEnumerable()
place detable.Rows.OfType<DataRow>()
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
la source
Vous pouvez lancer en boucle les lignes et les colonnes, vérifier les valeurs nulles, savoir s'il y a une valeur nulle avec un booléen, puis la vérifier après avoir parcouru la table et la 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 avec une instruction break, par exemple
//test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; }
Pour enregistrer une boucle dans le reste du tableau.
la source
Je ferai comme ...
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
la source
Vous pouvez utiliser la valeur Etc null / blank / space en utilisant 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);
Remplacez ici Nom de colonne par le nom de colonne de table et "" votre élément de recherche dans le code ci-dessus, nous recherchons une valeur nulle.
la source
DataTable dt = new DataTable(); foreach (DataRow dr in dt.Rows) { if (dr["Column_Name"] == DBNull.Value) { //Do something } else { //Do something } }
la source