检查数据表中是否有空值的最佳方法是什么?
在我们的方案中,大多数情况下,一列将具有所有空值。
(此数据表由第三方应用程序返回-我们正在尝试在我们的应用程序处理数据表之前放置一个别名)
Answers:
尝试将列的DBNull.Value
值与该值进行比较,以您认为合适的方式过滤和管理空值。
foreach(DataRow row in table.Rows)
{
object value = row["ColumnName"];
if (value == DBNull.Value)
// do something
else
// do something else
}
如果要检查表中是否存在空值,可以使用此方法:
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;
}
这将使您编写以下代码:
table.HasNull();
table.AsEnumerable()
的,而不是table.Rows.OfType<DataRow>()
您可以循环抛出行和列,检查是否为空,使用bool跟踪是否存在空值,然后在遍历表并对其进行处理后对其进行检查。
//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
}
您也可以使用break语句退出foreach循环,例如
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
break;
}
为了节省遍历表的其余部分。
我会喜欢的。
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))