2016-12-16 80 views
7
從「SELECT COUNT(*)結果

我有以下代碼:小巧玲瓏:FROM表名

string sql = "SELECT COUNT(*) FROM " + tableName; 
var rtn = DapperConnection.Query<int>(sql); 

這工作,並帶回1個記錄在RTN變量當我檢查變量它似乎有2成員,一個是「[0]」,另一個是「原始視圖」。

成員[0]是int類型的,並且具有期望值,但我似乎無法在我的。代碼這似乎是一個愚蠢的問題,因爲我應該能夠得到它,但不能將最新的嘗試是以下幾點:

int rtnCount = (int)rtn[0]; 

然而,這給了我一個編譯器錯誤。我如何在我的代碼中獲得這個值?

+2

'rtn.First()'也許? – MiMo

+0

是的,這是訣竅。非常感謝你。你讓我今天一整天都感覺很好!!! – user2975847

回答

4

使用rtn.First() - 它是一個枚舉所以這得到了第一次(也是唯一在這種情況下)項的一般方式。

16

請不要這樣做!它很脆弱,並且引入了一個嚴重的sql注入漏洞。如果您可以用一行非常富有表現力的代碼返回給定表的計數,並且沒有漏洞,爲什麼要使用它的方法?

DapperConnection.ExecuteScalar<int>("SELECT COUNT(*) FROM customers"); 

// You will be happier and live longer if you avoid dynamically constructing 
// sql with string concat.