2010-09-28 200 views
3

我有一个数据集从SQL Server中的存储过程中获取填充。我有一个列可以说有一组值。我不知道这些值是什么。我所知道的是他们的字符串类型。我想从该列中提取所有不同的值。从数据集提取数据

回答

2

您可以使用DataView并设置其RowFilter所需条件:

var view = new DataView(dataset.Tables["Table"]); 
view.RowFilter = "Column = 42"; 

UPDATE:根据您更新的问题,你可以使用LINQ:

var table = dataset.Tables["Table"].AsEnumerable(); 
var distinctValuesForColumn = 
    table.Select(row => (string)row["Column"]).Distinct(); 
+0

对不起。我必须改写我的问题。我的错。我有一栏可以说一套价值。我不知道这些值是什么。我所知道的是他们的字符串类型。我想从该列中提取所有不同的值。我希望现在很清楚。 – zack 2010-09-28 18:18:33

+1

请更新问题本身,而不是在评论中提供此类信息。 – 2010-09-28 18:22:52

+0

谢谢Jordao的想法。但它会引发一个错误。它不识别Distinct()。我是否必须将变量类型从var更改为某些值才能正常工作? – zack 2010-09-28 18:28:39

0

您可以简单地使用DataTable的选择方法:

DataRow[] extractedRows = 
    yourDataSet.Tables["YourTableName"].Select("YourColumnName = 123"); 
+0

我很抱歉。我必须改写我的问题。我的错。我有一栏可以说一套价值。我不知道这些值是什么。我所知道的是他们的字符串类型。我想从该列中提取所有不同的值。我希望现在很清楚。 – zack 2010-09-28 18:16:33

0

我希望下面的语句将成为你的目的

ds.Tables["TableName"].DefaultView.ToTable(true, "columnName"); //For Dataset (true means distinct) 

OR

`ds.Tables[0].DefaultView.ToTable(true, "columnName"); 

//对于数据集,其中tableindex是0

OR

dt.DefaultView.ToTable(true, "columnName"); //For Datatable 

//Syntax is like Datatable.DefaultView.ToTable(Distinct true/false, “ColumnName”); 

MSDN:http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx