将特定数据集列复制到数据表

时间:2013-08-30 10:39:20

标签: c# xslt datatable dataset

我有一个读取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);

2 个答案:

答案 0 :(得分:0)

说你必须将列“ColumnName1”,“ColumnName2”,“ColumnName3”,“ColumnName4”,“ColumnName5”复制到新的DataTable

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

答案 1 :(得分:0)

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

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);