web-dev-qa-db-fra.com

Dapper: résultat de "SELECT COUNT (*) FROM TableName

J'ai le code suivant:

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

Cela fonctionne et ramène 1 enregistrement dans la variable rtn. Lorsque j'inspecte la variable, elle semble avoir 2 membres, l'un est "[0]" et l'autre est "Raw View".

Le membre [0] est de type int et a la valeur attendue, mais je n'arrive pas à obtenir cette valeur dans mon code. Cela semble être une question stupide parce que je devrais pouvoir y arriver, mais je ne peux pas. Le dernier essai était le suivant:

int rtnCount = (int)rtn[0];

Cela m'a cependant donné une erreur de compilation. Comment accéder à cette valeur dans mon code?

16
user2975847

Veuillez ne pas faire ça! Il est fragile et introduit une vulnérabilité d'injection sql béante. Si vous pouvez renvoyer votre compte pour une table donnée avec une ligne de code très expressif et sans vulnérabilité, pourquoi en faire une méthode?

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

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

Utilisez rtn.First() - c'est une énumération, c'est donc la manière générale d'obtenir son premier (et seulement dans ce cas) élément.

4
MiMo