2011-09-26 45 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