Dapper: How to get value from DapperRow if column name is "count(*)"?

dapper

Question

I have a dynamic result from Dapper query that contains records like this:

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

I'm able to access 'USD' by using rowVariable.billing_currency_code

To get '6' value I tried rowVariable["count(*)"] and rowVariable.kv["count(*)"] and unfortunately nothing works...

I can't change the count(*) column name in my case

How to get the '6' value from the rowVariable of type DapperRow in such case?

Thanks.

Accepted Answer

If the column name genuinely is "count(*)", then you can cast the row to a dictionary:

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

For that to work (at least, in SQL Server), your query would need to be something like:

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

However, in most cases the column doesn't have a name, in which case: fix your query ;p

Actually, I'd probably say fix your query anyway; the following would be much easier to work with:

select count(*) as [Count]

Popular Answer

Suppose Your Data as below

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

as The columns is coming dynamically

var firstRow= Details.FirstOrDefault();

To get the heading columns of the data

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

To get the value of the data by using key

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


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why