Sandy777
Sandy777

Reputation: 51

Retrieve the latest or the last value of a column in a dataset

The below code gives the first row.. but i need to get the latest or the last row updated. Please help

 Dim dt As DateTime = ds.Tables(0).Rows(0)("Columnname")

Upvotes: 0

Views: 2241

Answers (2)

Steve
Steve

Reputation: 216323

You can use the Rows.Count property as shown in other answer or just let do that to Linq

Dim row = ds.Tables(0).AsEnumerable().Last()
Dim dt As DateTime = row.Field(Of DateTime)("ColumnName")

Of course this works for the last row of the table. This doesn't mean something like the last (more recent) value for the "ColumnName". If this is your intention then you need to "Sort" the datatable or better ask the source (a database ? ) of the rows to sort it.

If you are not able to change the data loading query to have it sorted directly from the database engine then you could reach (in code) the latest row ordered by "ColumnName" using something like this

' Create a dataview from the datatable, with no filter and ordered by ColumnName
Dim dv As DataView = New DataView(ds.Tables(0), "", "ColumnName ASC", DataViewRowState.CurrentRows)
dt = dv.Cast(Of DataRowView).Last().Row.Field(Of DateTime)("Column")

Upvotes: 4

nbadaud
nbadaud

Reputation: 694

You have to use ds.Tables(x).Rows.Count-1

Dim dt As DateTime = ds.Tables(0).Rows(ds.Tables(0).Rows.Count - 1)("Columnname")

Upvotes: 1

Related Questions