Перемотка курсора 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,

Другие вопросы по тегам