一次从DataTable中删除行而没有循环,其中列具有Null值

时间:2015-02-11 20:06:45

标签: c# datatable delete-row import-from-excel

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

DELETE table WHERE columnA IS NULL

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

如果没有循环,我怎样才能完成同样的事情?

2 个答案:

答案 0 :(得分:4)

如何从第一个创建一个新的,干净的DataTable?

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

答案 1 :(得分:0)

只需使用Linq ......

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

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