【问题标题】:Copy Specific Dataset Columns to Datatable将特定数据集列复制到数据表
【发布时间】:2013-08-30 10:39:20
【问题描述】:

我有一个读取 xml 数据的 DataSet,它有近 20 列, 我需要来自 DataSet 的 5 列。 我已经尝试过我的水平,但无法获得包含我需要的特定列的 DataTable。 我尝试过的一些代码是:

DataTable dt = new DataTable();  //dt is blank DataTable 
DataSet ds = new DataSet();  //ds is existing DataSet which has single table in it
dt.Columns[0]=dst4.Tables[0].Columns[0];               
dt.Columns.Add(dst4.Tables[0].Columns[0]);  
ds.Tables.Add(dt)
dst4.Tables.Columns.Add(dt);

【问题讨论】:

  • 您想要哪些列?你说 5 但是哪个,你的代码没有显示它。

标签: c# xslt datatable dataset


【解决方案1】:

您可以克隆创建具有相同列的空表的表,然后您可以删除冗余列。这是一个带有命名列的示例,您也可以使用索引:

DataTable dt = ds.Tables[0].Clone();
var colToTake = new[] { "Col1", "Col3", "Col7", "Col15", "Col19" };
var colsToRemove = dt.Columns.Cast<DataColumn>()
    .Where(c => !colToTake.Contains(c.ColumnName));
foreach (DataColumn colToRemove in colsToRemove)
    dt.Columns.Remove(colToRemove);

【讨论】:

  • 我尝试了另一种方法来完成任务,即从数据集中删除不需要的列。 ds.Tables[0].Columns.Remove("column1");
  • @codemirror:你把我弄糊涂了。为什么要从原始表中删除列而不是从空的克隆表中删除?这不是你在问题中提到的。如果它有效,我也会失踪。
  • 对不起,让我告诉你,我必须在 datagridview 上显示数据集,这是数据集的唯一用途,这就是为什么我从数据集中删除了特定的不需要的列,现在可以将其绑定到 datagridview。
  • @codemirror:也许这有帮助:stackoverflow.com/questions/208186/…
【解决方案2】:

假设您必须将列“ColumnName1”、“ColumnName2”、“ColumnName3”、“ColumnName4”、“ColumnName5”复制到新的DataTable

DataTable source = dst4.Tables[0];
DataTable dt = source.DefaultView.ToTable(false, "ColumnName1", "ColumnName2", "ColumnName3", "ColumnName4", "ColumnName5"); 

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 2013-03-31
    • 2012-01-06
    • 1970-01-01
    • 2012-01-07
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多