How do I get the last 5 rows of a datatable?

9.2k views Asked by At

How do I get the last 5 rows of a datatable? I tried something like this:

var Long_bottom = LongSlection.Last(5);

Where LongSlection is a DataRow. But I had an error, any idea?

4

There are 4 answers

0
V4Vendetta On BEST ANSWER

Not sure what you have got here

var Long_bottom = LongSlection.Last(5);

Assuming you have a DataTable and you want to get the last 5 rows you can do that via

datatable1.AsEnumerable().Reverse().Take(5);

Take and Skip return the specific number of elments (parameter is int) while which is not the case with Last you get the last element or you need a predicate for checking conditions or checks within the row.

0
Faraday On

This SHOULD do it. but it's untested!

IEnumerable<DataRow> lastRows = table.AsEnumerable().Skip(table.Rows.Count - 2).ToList();

Or:

table.AsEnumerable().Reverse().Take(2);

Edit: Modified to get the last TWO, as per the OPs request.

0
Nikhil Agrawal On

How about

Datarow[] dr = dt.Rows.Cast<DataRow>().Skip(dt.Rows.Count - 5).ToArray();

OR

dt.Rows.Cast<DataRow>().Reverse().Take(5);

Here 5 is the last number of rows to take.

0
Mamun On

I needed CopyToDataTable() to get things done:

dt = dt.AsEnumerable().Reverse().Take(5).CopyToDataTable();