2011-09-26 58 views
5

如何從DataTable中獲取選定的列?
例如,我的BaseTable有三列,
ColumnA,
ColumnB和
ColumnC。

現在作爲中間操作的一部分,我只需要從ColumnA中檢索所有行。是否有任何預定義的公式,如DataTable.Select?DataTable中的選定列

+0

只拉一列的目的是什麼?如果您將所有三列都留在那裏,那麼在循環數據時,您總是可以只用第一列'DataTable.Rows [i] [「ColumnA」]'。 – mellamokb

+1

我需要將列A的不同行值設置爲列表框。 – Krishna

+0

我可以創建一個DataView並從那裏消除不必要的列。但是,如果數據表大小很大,它將分兩步執行並扼殺。 – Krishna

回答

8

DataView.ToTable Method.

DataView view = new DataView(MyDataTable); 
DataTable distinctValues = view.ToTable(true, "ColumnA"); 

現在您可以選擇。

DataRow[] myRows = distinctValues.Select(); 
+0

我使用了我已經在評論中發佈的類似內容。這對我來說可以。只是尋找任何其他更好的解決方案,不影響性能。反正我現在好了。非常感謝。 – Krishna

1

從這個問題:How to select distinct rows in a datatable and store into an array,你可以得到不同的值:

DataView view = new DataView(table); 
DataTable distinctValues = view.ToTable(true, "ColumnA"); 

如果你正在處理大量數據表和關心的表現,我建議像下面這樣在.NET 2.0 。我假設你所顯示的數據類型是一個字符串,所以請根據需要進行更改。

Dictionary<string,string> colA = new Dictionary<string,string>(); 
foreach (DataRow row in table.Rows) { 
    colA[(string)row["ColumnA"]] = ""; 
} 
return colA.Keys; 
+0

最少行數將在50K左右,並且應該爲所有26列實施。所以foreach,while和while循環都沒有問題。 – Krishna

+0

無論如何,上述解決方案適用於我。我相信你的解決方案對於小數據對象來說是完美的。 – Krishna