我有来自Dapper查询的动态结果,其中包含以下记录:
{DapperRow, billing_currency_code = 'USD', count(*) = '6'}
我能够访问' USD'使用rowVariable.billing_currency_code
获得' 6'价值我尝试rowVariable["count(*)"]
和rowVariable.kv["count(*)"]
,遗憾的是没有任何作品......
我无法在我的案例中更改count(*)
列名称
如何获得' 6'在这种情况下来自DapperRow类型的rowVariable
的值?
感谢。
答案 0 :(得分:23)
如果列名真的是 "count(*)"
,那么您可以将该行转换为字典:
var data = (IDictionary<string,object>)row;
object value = data["count(*)"];
要使其工作(至少在SQL Server中),您的查询必须类似于:
select count(*) as [count(*)]
但是,在大多数情况下,列没有名称,在这种情况下:修复查询; p
实际上,我可能会说修复你的查询无论如何;以下内容将更容易使用:
select count(*) as [Count]
答案 1 :(得分:3)
假设您的数据如下
var Details={DapperRow, billing_currency_code = 'USD', count(*) = '6'}
as列动态地来了
var firstRow= Details.FirstOrDefault();
获取数据的标题列
var Heading= ((IDictionary<string, object>)firstRow).Keys.ToArray();
使用密钥
获取数据的值var details = ((IDictionary<string, object>)firstRow);
var vallues= details[Heading[0]];