从c#中的Dataview排序后选择前N行

iam*_*ous 5 c# dataview

我有一个10行的DataTable,其中一列是随机编号为1到10的列.我想对它们进行排序.通常,我这样做:

DataView Dv = new DataView(dtPost, "", "views desc", DataViewRowState.Unchanged);
repeater.DataSource = Dv;
repeater.DataBind();
Run Code Online (Sandbox Code Playgroud)

现在,我只想绑定此Dataview中的前5行.如果我试试这个:

DvPopBlogs.Table.Rows.Cast<System.Data.DataRow>().Take(5);

OR

DvPopBlogs.Table.AsEnumerable().Take(5); //this usually works if sorting wasnt necessary
Run Code Online (Sandbox Code Playgroud)

它工作正常,但dataView完全忘记了排序,只从顶部选择了5行.

我也尝试过所有的DataViewRowStates.排序后如何选择前5行?

我好像没想到了!请帮忙!

Phi*_*eck 3

您正在访问 DataView,但随后要求它Table绑定到 - 表本身未排序,它DataView提供了表的排序“视图”。

所以尝试一下(警告干代码!)

DvPopBlogs.DataViewRows.Take(5)
Run Code Online (Sandbox Code Playgroud)

获取前 5 个(按排序顺序)DataViewRow。如果你想要DataRows

DvPopBlogs.DataViewRows.Take(5).Select(dvr => dvr.Row)
Run Code Online (Sandbox Code Playgroud)

DataView 中的枚举器很可能是 DataViewRows 集合,因此您可以根据DvPopBlogs.Take(5)....需要使用。