I have a DataTable with 10 rows say one of the columns
numbered 1 to 10 randomly.
I want to sort them. usually, I do this:
DataView Dv = new DataView(dtPost, "", "views desc", DataViewRowState.Unchanged);
repeater.DataSource = Dv;
repeater.DataBind();
Now, I just want to bind the top 5 rows in this Dataview. If I try this:
DvPopBlogs.Table.Rows.Cast<System.Data.DataRow>().Take(5);
OR
DvPopBlogs.Table.AsEnumerable().Take(5); //this usually works if sorting wasnt necessary
It works, but the dataView completely forgets about the sorting and just selects 5 rows from top.
I have tried it with all DataViewRowStates too. How to select top 5 rows after sorting?
I seem to run out of ideas!
please help!
Best Answer
You are accessing the DataView, but then asking for the
Table
it is bound to - the table itself isn't sorted, theDataView
provides a sorted "view" of the table.So try (warning drycode!)
To get the first 5 (in sort order) DataViewRows. If you want the
DataRows
:It's quite possible the enumerator from DataView is the DataViewRows collection, so you may be able to just use
DvPopBlogs.Take(5)....
if you wish.