如何在两个单独的列中拆分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");