Перемотка курсора DataReader
Как мне перемотать курсор DataReader в начало?
С одним результатом DataReader мне нужно запустить два while
цикл, но они должны быть с самого начала. Это две итерации в одном наборе результатов, выполняющие запрос один раз.
Пример:
dr = command.ExecuteReader(cmd);
while (dr.Read()) {
// do some...
}
// rewind cursor here
while (dr.Read()) {
// do another things...
}
Я просмотрел документы DataReader и ничего не нашел, поэтому, если это невозможно с DataReader, я могу изменить класс на тот, который подходит для этой цели.
1 ответ
Решение
Вы не можете (если вы не выполните команду снова): это односторонний поток. Если вы хотите увидеть данные более одного раза, вам придется самостоятельно буферизовать их в памяти, например, в List<T>
(для некоторых T
) или (да) как DataTable
,