0

我知道 IDataReader 没有计数选项。而且您无法计算 datareader 中的行数并返回以再次读取它,因为它只会向前移动,这意味着您无法倒回它。我想到的最佳解决方案是执行 select 语句,计算 datareader 中的行数,然后执行另一个 select 语句并对数据执行任何您想做的事情。

这个问题可能已经在这里发布了很多次,但没有人对此给出真正的解决方案。不做第二个选择语句的最佳解决方案是什么?(选择很贵)

谢谢

4

1 回答 1

1

好吧,如果您在阅读之前需要行数,这只是一个问题,否则只需对结果和计数进行交互即可满足您的需求。或者只是将所有内容读入数据集并从那里开始工作

假设您在读取第一行时需要行数,您总是可以做这样的事情(这不是一个好主意)

SELECT [The Real Fields],COUNT(*) as Qty
WHERE [Conditions]
UNION 
SELECT [The Real Fields],0 as Qty
WHERE [Conditions]

这样,当您阅读第一行时,您就会知道有多少行可用。

是的,我知道可能有更好的方法来执行 SQL 以在没有联合和重复查询的情况下获取行数。

于 2013-02-27T13:26:44.820 回答