Dapper: ¿Cómo obtener el valor de DapperRow si el nombre de la columna es "count (*)"?

dapper

Pregunta

Tengo un resultado dinámico de la consulta de Dapper que contiene registros como este:

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

Puedo acceder a 'USD' utilizando rowVariable.billing_currency_code

Para obtener el valor '6' probé rowVariable["count(*)"] y rowVariable.kv["count(*)"] y lamentablemente nada funciona ...

No puedo cambiar el nombre de la columna de count(*) en mi caso

¿Cómo obtener el valor '6' de rowVariable de tipo DapperRow en tal caso?

Gracias.

Respuesta aceptada

Si el nombre de la columna es genuinamente "count(*)" , puede convertir la fila en un diccionario:

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

Para que eso funcione (al menos, en SQL Server), su consulta debería ser algo así como:

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

Sin embargo, en la mayoría de los casos, la columna no tiene un nombre , en cuyo caso: corrige tu consulta; p

En realidad, probablemente diría que corrija su consulta de todos modos ; lo siguiente sería mucho más fácil de trabajar:

select count(*) as [Count]

Respuesta popular

Supongamos que sus datos son los siguientes

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

como las columnas vienen dinámicamente

var firstRow= Details.FirstOrDefault();

Para obtener las columnas del encabezado de los datos

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

Para obtener el valor de los datos mediante el uso de la clave

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué