0

列の値、つまり列名と特定の行の行の値を 2 つの別々のリストに保存したいと考えています。ProviderDocumentの両方ですList<string>。しかし、DocumentI'm usingとの型の競合があるvar Documentため、コンパイラはそれを受け入れます。

次のコードは、var Document = Enumerable.Range(0, dr.FieldCount).Select(dr.GetValue).ToList();

OleDbCommand cmd = new OleDbCommand(abfrage, conn);
OleDbDataReader dr;
try
{
    conn.Open();
    dr = cmd.ExecuteReader();
    Provider = Enumerable.Range(0, dr.FieldCount)
                         .Select(dr.GetName)
                         .ToList();
    // Following line will throw exception
    var Document = Enumerable.Range(0, dr.FieldCount)
                             .Select(dr.GetValue)
                             .ToList();
    dr.Close();
    dr.Dispose();
}          
catch (System.InvalidOperationException inv)
{
    MessageBox.Show(inv.Message);
    throw;
}

最初のリストには列名が正しく格納されていますが、もう 1 つのリストは をスローしInvalidOperationException、行にも列にも値がないことを示しています。これは、一部の列では正しいです (それらは空です)。すべての列/行に値がある別の DB テーブルでテストしましたが、ここでも同じ例外が発生します。

私は何を間違っていますか?

前もって感謝します!

編集:

リーダーによる読み取り値を示す 2 つのスクリーンショットを次に示します。

列名を持つ最初のもの (値はグレー表示されています。機密データです): 最初の結果

行全体の値を持つ 2 つ目: 値の読み取り

4

2 に答える 2