Dapper:如果列名是" count(*)&#34 ;?如何从DapperRow获取值

时间:2014-08-12 11:57:13

标签: dapper

我有来自Dapper查询的动态结果,其中包含以下记录:

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

我能够访问' USD'使用rowVariable.billing_currency_code

获得' 6'价值我尝试rowVariable["count(*)"]rowVariable.kv["count(*)"],遗憾的是没有任何作品......

我无法在我的案例中更改count(*)列名称

如何获得' 6'在这种情况下来自DapperRow类型的rowVariable的值?

感谢。

2 个答案:

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