立即从 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 变量,它保存您新填充的数据表。
我正在从 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 变量,它保存您新填充的数据表。