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]];