如何將行從一個DataTable複製到另一個DataTable?使用DataTable.Copy()
不是一個選項,因爲這會創建一個NEW DataTable並刪除任何現有的DataRows。我想要做的是將List<DataTable>
中的行添加到另一個表中。有沒有辦法可以做到這一點?或者遍歷所有的表和行,並且我唯一的選擇是調用DataTable.ImportRow()
?如何將DataTable中的行復制到另一個DataTable中而不刪除現有行?
[更新] 好吧,這是完整的場景。我有一個有200萬條記錄的DataTable。加載它拋出System.OutOfMemoryException
。所以,我決定我需要頁/批量加載它。我使用DataAdapter.FillSchema()
創建目標表,僅用於加載列。之後,我使用DataAdapter.Fill()
(另一個DataTable)獲得「完整記錄」,然後將其分成List<DataTable>
。當使用DataTable.Merge
時,會拋出以下異常:「無法啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值。」
你看過DataTable.Merge或DataTable.Load嗎? –
DataTable.Load不是我正在尋找的,因爲我需要傳遞的是一個DataTable對象而不是IDataReader。另一方面,當我使用DataTable.Merge,錯誤'無法啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值。被拋出。附加說明:目標DataTable是使用DataAdapter.FillSchema創建的。這就是爲什麼我不明白爲什麼它會拋出這樣的錯誤。 –
據我所知,ImportRow是唯一的選擇。 http://stackoverflow.com/questions/12025012/c-sharp-simple-way-to-copy-or-clone-a-datarow http://www.aspdotnet-suresh.com/2013/08 /copy-add-rows-from-one-datatable-to-another-datatable.html – shanmugharaj