2009-09-13 62 views
1

我添加一个自动递增列(称为“的rowNum”),以我的表,它的工作好,之后我用这个代码,数据表行进行排序:如何对dataset.table [0]进行排序,然后得到前10名?

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

其中COLUMNNAME是我的一列(不是自动增加一个)。现在

,问题是: 当我想要得到的前10行我用这个代码:

dv.RowFilter = "rowNum <= 10"; 

结果不是我想要的,因为当我做dv.Sort了这个rownum洗牌(变以错误的顺序)。

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

回答

2

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

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

然后只是绑定到“行”。

+0

感谢名单了很多的帮助,但是你想,如果这样做会好就行超过1000? – Dabbas 2009-09-13 13:34:05

+0

是的。它应该至少和DataView解决方案一样好。 – 2009-09-13 14:43:51

0

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

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

 
dtChart = Rows.Take(10).CopyToDataTable();

相关问题