问题
How to make dr.Read();
start reading again from the beginning if a condition is satisfied?
Something like:
SqlDataReader dr = command.ExecuteReader();
for(int i=0; dr.Read() ; i++){
if(condition ){
//let dr.Read() start reading from the beginning
}
}
回答1:
You can't.
The *DataReader
classes are forward-only iterators.
Instead, you can store the results in a List<T>
(or a DataTable
)
回答2:
The only way to restart it is to grab a new reader with ExecuteReader()
.
回答3:
You can do that by first closing the datareader using dr.close();
then initializing it again.
If(condition)
{
dr.close();
dr=command.ExecuteReader();
}
Where command is the MySqlCommand
object.
来源:https://stackoverflow.com/questions/16361672/make-dbdatareader-start-reading-again-from-the-beginning-of-the-result-set