Dapper: Comment obtenir la valeur de DapperRow si le nom de la colonne est "count (*)"?

dapper

Question

J'ai un résultat dynamique de la requête Dapper qui contient des enregistrements comme ceci:

{DapperRow, billing_currency_code = 'USD', count(*) = '6'}

Je peux accéder à 'USD' en utilisant rowVariable.billing_currency_code

Pour obtenir la valeur '6', j'ai essayé rowVariable["count(*)"] et rowVariable.kv["count(*)"] et malheureusement rien ne fonctionne ...

Je ne peux pas changer le nom de la colonne count(*) dans mon cas

Comment obtenir la valeur '6' de rowVariable de type DapperRow dans un tel cas?

Merci.

Réponse acceptée

Si le nom de la colonne est réellement "count(*)" , vous pouvez alors placer la ligne dans un dictionnaire:

var data = (IDictionary<string,object>)row;
object value = data["count(*)"];

Pour que cela fonctionne (au moins, dans SQL Server), votre requête devrait être quelque chose comme:

select count(*) as [count(*)]

Cependant, dans la plupart des cas, la colonne n'a pas de nom , auquel cas: corrigez votre requête p

En fait, je dirais probablement réparer votre requête quand même ; il serait beaucoup plus facile de travailler avec:

select count(*) as [Count]

Réponse populaire

Supposez vos données comme ci-dessous

var Details={DapperRow, billing_currency_code = 'USD', count(*) = '6'}

comme les colonnes vient dynamiquement

var firstRow= Details.FirstOrDefault();

Pour obtenir les colonnes de titre des données

var Heading= ((IDictionary<string, object>)firstRow).Keys.ToArray();

Pour obtenir la valeur des données en utilisant la clé

var details = ((IDictionary<string, object>)firstRow);
var vallues= details[Heading[0]];


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi