<p>I've done development in both VB6 and VB.NET, and I've used ADODB objects in VB6 to handle recordset navigation (i.e. the MoveFirst, MoveNext, etc. methods), and I have used ADO.NET to handle queries in a row-by-row nature (i.e For Each Row In Table.Rows ...)</p>

<p>But now I seem to have come to a dilemma.  I am now building a program in VB.NET where I need to use the equivalent functionality of the Move commands of the old Recordset object.  Does VB.NET have some sort of object that supports this functionality, or do I have to resort to using the old ADODB COM object?</p>

<p>Edit: Just for clarification, I want the user to be able to navigate through the query moving forwards or backwards.  Looping through the rows is a simple task.</p>

In .Net, there are many ways to do this. One that I like is to use a DataReader, which can return multiple recordsets. You can loop through its records using While DataReader.Read.
One of the advantages of using DataReader is that it is a forward-only, read-only object, so it's fast and light-weight.
To allow the user to navigate through all of the records, one at a time, you do not want to hold a DataReader open while the user navigates. you can read the DataReader records into objects. Or, you can retrieve the records into a DataSet, and display the DataRows from the DataTable one at a time.
I would suggest that, if possible, you retrieve all of the records at once if there are not too many. This will save repeated calls to the database.
On the other hand, if there are a lot of records, you could retrieve the first few (say, 10 or 20) and only retrieve the next set of records with a new database call if the user clicks beyond the initial set. This is lazy loading.