立即从 DataTable 中删除行,而无需循环,其中列具有 Null 值

Delete rows from DataTable at once without loop where a column has Null value

我正在从 Excel 工作表填充 DataTable 对象。我不指望用户正确输入数据,我想删除 A 列中具有空值的行。我搜索了很多,看起来每个人都在使用 for 循环执行此操作.这就是问题所在:757,000 行。如果数据格式不正确,DataTable 会填满 Excel 的最大值 1048575。我不需要单独检查每个值。在 SQL 服务器中你可以写:

DELETE table WHERE columnA IS NULL

我考虑过在 DataTable 填充中排除空值,但我无法让它可靠地工作,因为我不知道列 A 的名称,直到它在 DataTable 中,有时列名称有一个 \n 中间的字符会引发语法错误。

如何在没有循环的情况下完成同样的事情?

从您的第一个 DataTable 创建一个新的、干净的 DataTable 怎么样?

DataTable t = new DataTable(); //actually your existing one with bad records
DataTable newTable = t.Select().Where(x => !x.IsNull(0)).CopyToDataTable();

只需使用 Linq...

var newData = (from d in DataTable //this would be your datatable. 
              where d.columnA != NULL
              select d.*).CopyToDataTable<DataRow>();

然后只需使用您的 newData 变量,它保存您新填充的数据表。