Найти индекс строки в DataTable - PullRequest
1 голос
/ 07 февраля 2012

Можно ли получить индекс строки таблицы данных, чтобы вы могли получить доступ к предыдущей и следующей строке?Например, у меня есть DataTable, который содержит два столбца ChapterTitle и PageURL.Это для оглавления книги.ChapterTitle - это название главы, а PageURL - это HTML-страница, которая содержит главу (chaptername.html).Когда я войду в одну главу книги, я хочу иметь возможность сказать, что является следующей и предыдущей главой.

После нахождения главы, в которой я сейчас нахожусь, как можно получить следующие и предыдущие строки?

ChapterTable.Select("PageURL = '" & PageURL& "'")

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012
Private Sub LoadDataAndFindRow
Dim dt As New DataTable()
dt.Columns.Add("ChapterTitle")
dt.Columns.Add("PageURL")

Dim dr As DataRow = dt.NewRow()
dr(0) = "Aarons Book"
dr(1) = "www.AaronsBook.com"
dt.Rows.Add(dr)

dr = dt.NewRow()
dr(0) = "Tims Book"
dr(1) = "www.TimsBook.com"
dt.Rows.Add(dr)

dr = dt.NewRow()
dr(0) = "vincents Book"
dr(1) = "www.vincentsBook.com"
dt.Rows.Add(dr)

dr = dt.NewRow()
dr(0) = "Xi's Book"
dr(1) = "www.XisBook.com"
dt.Rows.Add(dr)

Dim i As Integer = FindRow(dt, "Tims Book")
Dim prevRowID As Integer = i - 1
Dim nextRowID As Integer = i + 1

End Sub


Function FindRow(ByVal dt As DataTable, ByVal chapterTitle As String) As Integer
For i As Integer = 0 To dt.Rows.Count
If dt.Rows(i)("ChapterTitle") = chapterTitle Then Return i
Next
Return -1
End Function
0 голосов
/ 05 ноября 2013

Если вы установите dt.Columns.PrimaryKey () при составлении таблицы, вы можете просто использовать findby (pk), если вы установили это, тогда вы можете легко использовать LINQ, просто:для удобства чтения:

dim query = from  chapters in dt.AsEnumerable _
             where chapters("chapterTitle").equals(<<your criteria>>) _
             select chapters

newDT = iif(chapters.count > 0, chapters.copyToDataTable(), nothing)

Вы можете изменить или просто получить chapters.toDataRow..etc.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...