如何在两个单独的列中拆分DataTable

我有一个DataTable,它有很多列,只有一行:

... DataSet myDataSet = new DataSet(); da.Fill(myDataSet); myDataTable = new DataTable(); myDataTable = myDataSet.Tables[0]; ... 

如何将DataSet / DataTable拆分为具有相同数量的列(如果是奇数,则拆分列以使第一个DataTable具有额外列)。

场景#1:

DataTable

 col1 col2 col3 col4 col5 col6 col7 col8 9 0 9 5 7 4 9 3 

DataTable1

 col1 col3 col3 col4 9 0 9 5 

DataTable2

 col5 col6 col7 col8 7 4 9 3 

场景#2:

DataTable

 col1 col2 col3 col4 col5 col6 col7 9 0 9 5 7 4 9 

DataTable1

 col1 col3 col3 col4 9 0 9 5 

DataTable2

 col5 col6 col7 7 4 9 

您可以复制整个数据表,然后删除不需要的列。

因此,对于您的第一个示例,以下代码将返回datatable1中的前四列和数据表2中的剩余列。

您可以根据列数修改代码

 DataTable dataTable1; dataTable1 = myDataTable.Copy(); dataTable1.Columns.RemoveAt(4); dataTable1.Columns.RemoveAt(5); dataTable1.Columns.RemoveAt(6); dataTable1.Columns.RemoveAt(7); DataTable dataTable2; dataTable2 = myDataTable.Copy(); dataTable2.Columns.RemoveAt(0); dataTable2.Columns.RemoveAt(1); dataTable2.Columns.RemoveAt(2); dataTable2.Columns.RemoveAt(3); 

你也可以使用DataView.ToTable(String, Boolean, String[])的重载版本来实现这个传递所需的列名,如下所示

 DataView view1 = new DataView(myDataSet.Tables[0]); DataTable table1 = view1.ToTable("Table1", true, "col1", "col3", "col4", "col5", "col6"); DataView view2 = new DataView(myDataSet.Tables[0]); DataTable table2 = view2.ToTable("Table2", true, "col2", "col7", "col8");