asp.net IDataReader计数情况

asp.net IDataReader计数情况,asp.net,idatareader,Asp.net,Idatareader,我知道IDataReader没有计数选项。您不能在datareader中计算行数并返回再次读取,因为它只向前,这意味着您无法倒带它。我想到的最佳解决方案是执行select语句,计算datareader中的行数,然后执行另一个select语句,并对数据执行任何您想执行的操作 这个问题可能在这里被贴了很多次,但是没有人给出一个真正的解决方案。不执行第二个select语句的最佳解决方案是什么?选择是昂贵的 谢谢好吧,如果在阅读之前需要行计数,这只是一个问题,否则只需将结果和计数进行交互即可满足您的需要

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

这个问题可能在这里被贴了很多次,但是没有人给出一个真正的解决方案。不执行第二个select语句的最佳解决方案是什么?选择是昂贵的


谢谢

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

假设您在阅读第一行时需要行数,您总是可以这样做,这不是一个好主意

SELECT [The Real Fields],COUNT(*) as Qty
WHERE [Conditions]
UNION 
SELECT [The Real Fields],0 as Qty
WHERE [Conditions]
这样,当您阅读第一行时,您将知道有多少行可用


是的,我知道可能有更好的SQL方法来获取行数,而无需联合和重复查询。

select可能比请求所有数据并循环获取行数便宜很多倍。数据库在优化dbo.Table中的SELECT Count*方面非常聪明。