【问题标题】:How to split a DataTable in two separate by columns如何将数据表拆分为两个单独的列
【发布时间】:2015-07-07 14:21:38
【问题描述】:

我有一个 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

【问题讨论】:

  • 您能解释一下您想要达到的目标吗?有可能(当然)达到这一点,但我想不出有什么理由这样做......我很确定有更好的解决方案来解决你的问题 - 不管这是什么......
  • 我有两个独立的中继器,我试图在它们之间拆分数据。这个问题的答案:stackoverflow.com/questions/31254126/… 有效,除了我想拆分数据表并使用两个单独的来填充到两个单独的转发器。

标签: c# sql-server datatable


【解决方案1】:

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

因此,对于您的第一个示例,以下代码将返回 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);

【讨论】:

  • 谢谢,但列数并不总是相同。
  • 是的,你需要根据你的列大小修改它
  • 没有动态的办法吗?
  • 您可以在一个变量中获取列数,根据您的第一个和第二个示例将其拆分为 2,然后在这些列数上使用上述代码。
  • @SearchForKnowledge:并不奇怪......你只需要保持Remove(0)-ingx次数,如果你正在循环(我猜你是)......
【解决方案2】:

您也可以使用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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 2021-10-11
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多