2013-05-03 23 views
8

Come fare dr.Read(); ricominciare a leggere dall'inizio se una condizione è soddisfatta? Qualcosa di simile:Come rendere DataReader ricominciare a leggere dall'inizio a una condizione?

sqlDataReader dr = command.ExecuteReader(); 
for(int i=0; dr.Read() ; i++){ 
if(condition){ 
//let dr.Read() start reading from the beginning 
} 
} 
+0

Qual è il tipo di 'dr'? – Dirk

+1

@Dirk Probabilmente 'SqlDataReader' è taggato. --_-- –

+0

'DataReader' è solo forward. –

risposta

16

Non è possibile.

Le classi *DataReader sono di inoltro solo iteratori.

Invece, è possibile memorizzare i risultati in un List<T> (o un DataTable)

1

L'unico modo per riavviarlo è quello di afferrare un nuovo lettore con ExecuteReader().

0

Potete farlo chiudendo prima DataReader utilizzando dr.close(); poi inizializzare di nuovo.

If(condition) 
{ 
    dr.close(); 
    dr=command.ExecuteReader(); 
} 

Dove comando è l'oggetto MySqlCommand.