如何将一个DataTable分成两个单独的列

本文关键字:两个 单独 一个 DataTable | 更新日期: 2023-09-27 18:01:36

我有一个数据表,它有很多列,只有一行:

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

我如何分割数据集/数据表有相同数量的列(如果它是一个奇数,分割列,使第一个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

如何将一个DataTable分成两个单独的列

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

对于第一个示例,下面的代码将返回datatable1中的前四列和datatable 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");