问题
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