如何排序dataset.table [0]然后获得前10名?

时间:2009-09-13 12:15:20

标签: c# visual-studio datatable sorting dataview

我正在向我的表添加一个自动增量列(称为“rowNum”)并且它运行正常,之后我使用此代码对数据行进行排序:

DataView dv = MyDataSet.Tables[0].DefaultView;
dv.Sort = "columnName DESC";

其中columnName是我的列之一(不是自动增量列)。

现在,问题是: 当我想要获得前10行时,我使用此代码:

dv.RowFilter = "rowNum <= 10";

结果不是我想要的,因为当我执行dv.Sort时,rowNum改组(变为错误的顺序)。

如何在排序行后获得前10行?

2 个答案:

答案 0 :(得分:2)

我更喜欢LINQ这样的东西。相反,我使用System.Linq并写:

var rows = MyDataSet.Tables[0].AsEnumerable()
   .OrderByDescending(r => r["columnName"]) 
   .Take(10);

然后绑定到“rows”。

答案 1 :(得分:0)

如果在AsEnumerable()行中添加.Take(10)不起作用。但如果添加下面提到的第二行是有效的。

&#13;
&#13;
var Rows = (from row in dt.AsEnumerable() 
orderby row["CostPerVeteran"] descending
select row);

dtChart = Rows.Take(10).CopyToDataTable();
&#13;
&#13;
&#13;