2015-02-11 31 views
1

我從Excel工作表中填充DataTable對象。我不指望用戶正確輸入數據,我想刪除列A中具有空值的行。我已經搜索了很多,並且看起來每個人都在使用for循環。這是問題:757,000行。如果數據格式不正確,那麼DataTable會被Excel的最大值1048575填滿。我不需要單獨檢查每個值。在SQL Server中,你可以這樣寫:一次從DataTable中刪除行,沒有循環,其中列有空值

DELETE table WHERE columnA IS NULL

我認爲在數據表填寫不包括空值,但我不能得到這個可靠地工作,因爲我不知道A列的名字,直到它在DataTable和有時列名在中間有一個\n字符,這會引發語法錯誤。

如何在沒有循環的情況下完成同樣的操作?

+0

是否要刪除源工作簿中的行或僅在數據表中顯示它們?你如何從Excel中讀取? – 2015-02-11 20:09:56

+0

你能不能實現DataTable的'Select()'方法來篩選並可能從那裏填充一個DataTable ..?也'IN SQL Server'你的語法是不正確的..它是'DELETE [FROM TABLE NAME] WHERE子句' – MethodMan 2015-02-11 20:12:28

+0

@DStanley真的我只是希望他們不在數據表中。 – stphnlwlsh 2015-02-11 20:34:33

回答

2

如何從第一個創建一個新的乾淨的DataTable?

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

完美。謝謝。 – stphnlwlsh 2015-02-11 21:33:36

0

只需使用Linq ...

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

然後,只需用你的newData變量,它保存你的新填充的數據表。

相關問題