我有一个datareader。我需要找到它中的行数,以便我可以实例化一个数组。最初我通过使用:
来做到这一点<code>
DataTable dt = new DataTable();
dt.Load(reader);
int noOfRows = dt.Rows.Count;
</code>
但是我发现将阅读器加载到数据表中会关闭阅读器,然后才能在我的代码中迭代它。我想克隆读者并将克隆传递给Datatable。这是可行的还是可取的?
有没有更好的方法来查找数据读取器中的行数?我知道我可以用列表做一些事情(不完全确定是什么),但我的datareader包含33个不同数据类型的字段,我不知道如何将它们全部放入列表中。
感谢
答案 0 :(得分:0)
ADO.NET和SQL Server本身都不知道发送之前的行数。您只能通过枚举所有行来找到。
也许您可以使用report_table = """<table>
.........
...........
..........
</table>"""
代替数组,这样就不必预先定义尺寸了?