2016-12-16 86 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.