2017-01-19 6 views
0

В приведенном ниже коде дается первая строка .. но мне нужно обновить последнюю или последнюю строку. Пожалуйста, помогитеПолучить последнее или последнее значение столбца в наборе данных

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

«last» - это нерелевантный термин с данными db, поскольку вы не представляете, как он хранится, и в зависимости от вашего предложения WHERE (или его отсутствия) одни и те же данные могут быть возвращены вам в другом порядке. Вы также должны включить Option Strict. – Plutonix

ответ

1

Вы должны использовать ds.Tables(x).Rows.Count-1

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

Да, я получил его .. Большое спасибо :) – Sandy777

+0

@ Sandy777 Если проблема решена, не забудьте принять ответ или подробно, как вам удалось решить вашу проблему. – nbadaud

+0

Dim dt As DateTime = ds.Tables (0) .Rows (ds.Tables (0) .Rows.Count - 1) ("Columnname") эта строка отлично работает, чтобы получить последнюю строку – Sandy777

2

Вы можете использовать свойство Rows.Count, как показано в другой ответ или просто позволить сделать это в Linq

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

Конечно это работает для последней строки таблицы. Это не означает что-то вроде последнего (более нового) значения для «ColumnName». Если это ваше намерение, вам нужно «Сортировать» данные или лучше спросить источник (базу данных?) Строк для его сортировки.

Если вы не в состоянии изменить запрос загрузки данных, чтобы он сортируется непосредственно от двигателя базы данных, то вы могли бы достичь (в коде) последнюю строку заказанной «ColumnName», используя что-то вроде этого

' 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")