2014-12-20 97 views
2

我有一個包含多列的數據表。我要篩選我做的列:在數據表中篩選列

newDatableName= OldDt.ToTable(false,"col1","col2"); 

現在假設,我想dyanamically指定列名,即把所有的列名的字符串,然後做:

string colnames= "col1,col2"; 
newDatableName= OldDt.ToTable(false,colnames); 

我嘗試了以上,但它不起作用。我甚至嘗試:

string colname= "\"col1\",\"col2\""; 

,但它認爲列名的字符串作爲一列,並給出了錯誤,沒有這樣的列存在。

任何幫助表示讚賞。

回答

2

我想你正在使用DataView.ToTable方法(所以OldDT是DataView不是DataTable)。
在這種情況下,你需要通過你的列名的數組

string[] colnames = new string[] {"col1", "col2"}; 
newDatableName= OldDt.ToTable(false,colnames); 
+0

由於一噸史蒂夫。你爲我節省了很多時間。乾杯! –

1

可以使用史蒂夫的回答,如果不喜歡定義一個新的數組試試這個:

string colnames="col1,col2" 
newDatableName=OldDt.ToTable(colnames.Split(','); 
+0

@JacksonLopes無論如何你的最終目標不明確,爲什麼你想讓他們在一個字符串? – niceman

+0

謝謝你。你的回答對我很有幫助,但是因爲史蒂夫給了我指路,我不得不標出他的答案。萬分感謝。乾杯! –

+0

沒問題。很高興幫助 – niceman

0
DataTable.DefaultView.ToTable(bool, Params string[] ColumnNames); 

上述方法根據現有的DataView中的行創建並返回新的DataTable

您必須將兩個參數傳遞給此函數。 如果爲true,則返回的DataTable包含行的所有列都有不同的值。默認值是false。 包含要包含在返回的DataTable中的列名稱列表的字符串數組。 DataTable按照它們在此數組中出現的順序包含指定的列。 例如:

DataTable NewTable = dt.DefaultView.ToTable(false, "StartDate", "FinishDate", "ItemName", "AssigneeNames", "ProjectName", "PercentComplete");