Dapper: Как получить значение из DapperRow, если имя столбца "count (*)"?

У меня есть динамический результат запроса Dapper, который содержит такие записи:

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

Я могу получить доступ к доллару США с помощью rowVariable.billing_currency_code

Чтобы получить значение "6", я попытался rowVariable["count(*)"] и rowVariable.kv["count(*)"], и, к сожалению, ничего не работает...

Я не могу изменить имя столбца count(*) в моем случае

Как получить значение '6' из rowVariable типа DapperRow в таком случае?

Ответы

Ответ 1

Если имя столбца действительно является "count(*)", вы можете отнести строку к словарю:

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

Для этого, чтобы работать (по крайней мере, в SQL Server), ваш запрос должен быть примерно таким:

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

Однако в большинстве случаев столбец не имеет имени, и в этом случае: исправить ваш запрос; p

На самом деле, я бы, вероятно, сказал, исправить ваш запрос в любом случае; с гораздо легче работать:

select count(*) as [Count]

Ответ 2

Предположим, что ваши данные ниже

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

поскольку столбцы идут динамически

var firstRow= Details.FirstOrDefault();

Чтобы получить столбцы заголовка данных

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

Чтобы получить значение данных с помощью ключа

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