C#:无需指定列名/索引检测DataTable含空值的行
检测DataTable中包含空值的行(无需指定列)
没问题,这事儿很容易解决!你之前的写法指定了列索引,但其实我们可以借助LINQ的Any()方法,轻松检查行内任意一列是否存在空值,完全不用硬编码列名或索引。
这里有两种常用的实现方式,你可以根据习惯选择:
方法1:利用ItemArray属性直接检查单元格值数组
var rowsWithNulls = excelTable.AsEnumerable() .Where(row => row.ItemArray.Any(item => item == DBNull.Value));
ItemArray会把当前行的所有单元格值打包成一个对象数组,我们只需要判断这个数组里是否存在DBNull.Value(DataTable中空值的标准表示)就行,简单直接。
方法2:遍历表的列集合进行检查
var rowsWithNulls = excelTable.AsEnumerable() .Where(row => row.Table.Columns.Cast<DataColumn>() .Any(col => row.IsNull(col)));
这种方式更贴合DataTable的原生API:通过row.Table.Columns拿到当前表的所有列,转成DataColumn集合后,用row.IsNull(col)方法逐个判断列是否为空,最后用Any()确认是否存在至少一个空值列。
如果之后你需要找所有列都为空的行,只需要把Any()换成All()就可以了,非常灵活。
内容的提问来源于stack exchange,提问作者Andre Villanueva
相关产品推荐
相关产品推荐

