web-dev-qa-db-ja.com

DbDataReaderが結果セットの最初から読み取りを再開するようにします

条件が満たされた場合にdr.Read();を最初から読み直すにはどうすればよいですか?

何かのようなもの:

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

できません。

*DataReaderクラスは転送のみイテレータです。

代わりに、結果をList<T>(またはDataTable)に保存できます。

20
SLaks

再起動する唯一の方法は、ExecuteReader()で新しいリーダーを取得することです。

3
Andomar

これを行うには、最初にdr.close();を使用してデータリーダーを閉じてから、再度初期化します。

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

ここで、commandはMySqlCommandオブジェクトです。

1
danish_wani