2013-02-27 35 views
0

我知道IDataReader沒有計數選項。而且你不能在datareader中對行進行計數,並返回再次閱讀它,因爲它只是前進,這意味着你不能倒帶它。我想到的最佳解決方案是執行select語句,對datareader中的行進行計數,然後執行另一個select語句並對數據執行任何您想要的操作。asp.net IDataReader計數情況

這個問題可能已經在這裏發佈了很多次,但沒有人給出真正的解決方案。什麼是最好的解決方案,而不做第二個選擇陳述? (選擇價格昂貴)

謝謝

+1

該選擇可能比請求所有數據便宜很多很多倍,並循環它只是爲了得到一個計數。數據庫在優化這個'SELECT Count(*)FROM dbo.Table'方面真的很聰明。 – 2013-02-27 13:21:39

回答

1

好吧,如果你需要的行數讀之前,否則只是在作用中的結果和計數會給你你需要什麼,這只是一個問題。或者只是讀寄託都變成數據集,並努力從那裏

假如您需要的行數,當你閱讀的第一行,你總是可以做這樣的事情(我不是說是一個好主意)

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

那方式,當你讀第一行時,你會知道你有多少行可用。

是的,我知道可能有更好的方法來執行SQL來獲取沒有聯合和重複查詢的rowcount。

+0

很好解釋。 – 2013-02-27 13:30:50