25

DataRowわかりました、 aを aから抽出したいと思いDataReaderます。私はかなり長い間見回してきましたが、これを行う簡単な方法があるようには見えません。

行のコレクションであると理解していDataReaderますが、一度に1行しか読み取れません。

だから私の質問: aDataRowの現在の行から aを抽出する方法はありDataReaderますか?

4

2 に答える 2

4

DataReader次のようなコードがあるため、おそらく質問しています。

static void ViaDataReader(IDataReader rdr)
{
    while (rdr.Read())
        Console.WriteLine("{0,-27} {1,-46} {2,-25} {3}", rdr[0], rdr[1], rdr[2], rdr[3]);
}

/// ...

ViaDataReader(DbProviderFactories.GetFactoryClasses().CreateDataReader());

ただし、Tim が指摘したように、各反復で が必要になることが事前にわかっている場合は、代わりに使用し、そのプロパティを反復処理する必要があります (次の出力は上記と同じです)。DataRowDataTableRows

static void ViaDataTable(IDataReader rdr)
{
    var table = new DataTable();
    table.Load(rdr);
    foreach (DataRow row in table.Rows)
        Console.WriteLine("{0,-27} {1,-46} {2,-25} {3}", row[0], row[1], row[2], row[3]);
}

/// ...

ViaDataTable(DbProviderFactories.GetFactoryClasses().CreateDataReader());

何らかの理由で絶対に を使い続ける必要がある場合は、最初の例にループ インデックス整数を追加し、各反復でDataReader(完全にプリロードされた) から各行を取得できると思います。DataTableしかし、は全体的により豊かであるため、 を実行した後DataTableに を放棄しない理由はまったくありません。DataReaderDataTable.Load()

于 2018-03-30T05:12:19.577 に答える