2013-08-30 63 views
0

我有一個讀取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); 
+0

你想要哪些列?你說5,但是,你的代碼沒有顯示它。 –

回答

0

說你要複製列 「ColumnName1」, 「ColumnName2」, 「ColumnName3」, 「ColumnName4」, 「ColumnName5」 新DataTable

DataTable source = dst4.Tables[0]; 
DataTable dt = source.DefaultView.ToTable(false, "ColumnName1", "ColumnName2", "ColumnName3", "ColumnName4", "ColumnName5"); 
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); 
+0

我嘗試了通過從數據集中刪除不需要的列來完成任務的另一種方式。 ds.Tables [0] .Columns.Remove(「column1」); – codemirror

+0

@codemirror:你讓我困惑。爲什麼從原始表中刪除列而不是空的克隆表?這不是你在你的問題中提到的。而且我也失蹤,如果它的工作。 –

+0

對不起,讓我告訴,我必須將數據集顯示到datagridview,這是數據集的唯一用途,這就是爲什麼我從數據集中刪除特定的不需要的列,現在可以將它綁定到datagridview。 – codemirror