最好的方法来检查一个数据表是否有一个空值
检查数据表是否有空值的最好方法是什么?
在我们的场景中,大多数情况下,一列将全部为空值。
(这个数据表由第三方应用程序返回 – 我们正在尝试在我们的应用程序处理数据表之前进行调用)
尝试将列的值与DBNull.Value
值进行比较,以您认为合适的方式过滤和pipe理空值。
foreach(DataRow row in table.Rows) { object value = row["ColumnName"]; if (value == DBNull.Value) // do something else // do something else }
有关DBNull类的更多信息
如果你想检查表中是否存在空值,你可以使用这个方法:
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();
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
你可以循环引用行和列,检查空值,跟踪是否有一个空的布尔值,然后检查它在循环遍历表并处理它。
//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 }
你也可以从foreach循环中拿出一个break语句来例如
//test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; }
通过表格的其余部分保存循环。
- 为什么许多语言端口的.net前缀为“铁”?
- Stream.Seek(0,SeekOrigin.Begin)或者Position = 0
- 你如何使用NHibernate进行分页?
- 为什么没有Char.Empty就像String.Empty?
- .Net项目上的命名空间文档(Sandcastle)?
- entity framework – 无法将lambdaexpression式转换为“string”types,因为它不是委托types
- INotifyPropertyChanged属性名称 – 硬编码与reflection?
- 从一个string创build一个类的实例
- 仅使用date时间格式以小写forms获取AM / PMdate时间