【发布时间】:2017-05-24 11:27:22
【问题描述】:
我想将列的值(即列名)和特定行的行值存储到两个单独的列表中。 Provider 和 Document 都是 List<string>。但是由于和Document有类型冲突,我用的是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 对其进行了测试,其中每一列/行都有一个值,但在这里我得到了同样的异常。
我做错了什么?
提前致谢!
编辑:
这是两个屏幕截图,显示了阅读器的读取值。
第一个带有列名(值是灰色的,它是敏感数据): first results
第二个是整行的值: read values
【问题讨论】:
标签: c# enumerable getvalue