Dapper:如果列名是"count(*)",如何从DapperRow获取值?

Zel*_*lid 10 dapper

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

{DapperRow, billing_currency_code = 'USD', count(*) = '6'}
Run Code Online (Sandbox Code Playgroud)

我可以通过使用来访问'USD' rowVariable.billing_currency_code

要获得"6"值我试过rowVariable["count(*)"]rowVariable.kv["count(*)"],不幸的是没有什么作品?

count(*)在我的情况下,我无法更改列名称

在这种情况下如何从rowVariable类型DapperRow中获取'6'值?

谢谢.

Mar*_*ell 23

如果列名真的是 "count(*)",那么您可以将行转换为字典:

var data = (IDictionary<string,object>)row;
object value = data["count(*)"];
Run Code Online (Sandbox Code Playgroud)

要使其工作(至少在SQL Server中),您的查询需要是这样的:

select count(*) as [count(*)]
Run Code Online (Sandbox Code Playgroud)

但是,在大多数情况下,列没有名称,在这种情况下:修复查询; p

其实,我可能会说,解决您的查询无论如何 ; 以下将更容易使用:

select count(*) as [Count]
Run Code Online (Sandbox Code Playgroud)


小智 10

假设您的数据如下

var Details={DapperRow, billing_currency_code = 'USD', count(*) = '6'}
Run Code Online (Sandbox Code Playgroud)

因为列是动态的

var firstRow= Details.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

获取数据的标题列

var Heading= ((IDictionary<string, object>)firstRow).Keys.ToArray();
Run Code Online (Sandbox Code Playgroud)

使用key获取数据的值

var details = ((IDictionary<string, object>)firstRow);
var vallues= details[Heading[0]];
Run Code Online (Sandbox Code Playgroud)