.net 在DataTable上查找行索引

.net 在DataTable上查找行索引,.net,vb.net,datatable,.net,Vb.net,Datatable,是否可以获取数据表的行索引,以便访问上一行和下一行?例如,我有一个DataTable,它包含两列ChapterTitle和PageURL。这是一本书的目录。ChapterTitle是章节名称,PageURL是包含章节的HTML页面(chaptername.HTML)。当进入书中的一章时,我想知道下一章和上一章是什么 找到我当前所在的章节后,如何获得下一行和上一行 ChapterTable.Select("PageURL = '" & PageURL& "'") 如果在绘制表时设

是否可以获取数据表的行索引,以便访问上一行和下一行?例如,我有一个DataTable,它包含两列ChapterTitle和PageURL。这是一本书的目录。ChapterTitle是章节名称,PageURL是包含章节的HTML页面(chaptername.HTML)。当进入书中的一章时,我想知道下一章和上一章是什么

找到我当前所在的章节后,如何获得下一行和上一行

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

如果在绘制表时设置了dt.Columns.PrimaryKey(),则只需使用findby(pk)即可。如果设置了该值,则可以轻松使用LINQ,只需: '我们将命名datatable章节以保持可读性:

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

newDT = iif(chapters.count > 0, chapters.copyToDataTable(), nothing)
dim query=来自dt.AsEnumerable中的章节_
其中章节(“章节标题”)等于()_
选择章节
newDT=iif(chapters.count>0,chapters.copyToDataTable(),无)
您可以修改或仅获取章节。toDataRow..等


HTH

您说您有两列:
ChapterTitle
PageURL
,但是您
重新选择了该列
ChapterStartPage`。要么您的数据库中有信息,要么您必须解析您的ChapterTitle以查找信息。。。(提醒:数据库中行的顺序不应该相关。主键是。)有没有不使用循环就可以做到这一点的方法?我第一次尝试在datatable.AsEnumerable()上使用带Skip(-1)。Take(3)的LINQ,但它占用了太多的时间。另一个想法是在数据表中有一个名为RowID的第三列,然后您可以使用问题中所示的.Select方法,使用RowID-1或+1,您将知道数据表中的上一行和下一行。
dim query = from  chapters in dt.AsEnumerable _
             where chapters("chapterTitle").equals(<<your criteria>>) _
             select chapters

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