我想将列的值(即列名)和特定行的行值存储到两个单独的列表中。Provider
并且Document
都是List<string>
. Document
但由于与I'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;
}
第一个列表正确存储了列名,但另一个列表抛出一个InvalidOperationException
并说,行或列中都没有值。这对于某些列是正确的(它们是空的)。我用另一个 DB-Table 对其进行了测试,其中每一列/行都有一个值,但在这里我得到了同样的异常。
我究竟做错了什么?
提前致谢!
编辑:
这是两个屏幕截图,显示了阅读器的读取值。
第一个带有列名(值是灰色的,它是敏感数据): 第一个结果
第二个是整行的值: 读取值