web-dev-qa-db-ja.com

Dapper:列名が「count(*)」の場合、DapperRowから値を取得するにはどうすればよいですか?

Dapper クエリの動的な結果があります。これには次のようなレコードが含まれています。

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

_rowVariable.billing_currency_code_を使用して「USD」にアクセスできます

'6'値を取得するために、rowVariable["count(*)"]rowVariable.kv["count(*)"]を試しましたが、残念ながら何も機能しません。

私の場合、count(*)列名を変更できません

このような場合、タイプ DapperRowrowVariableから「6」の値を取得する方法は?

12
Zelid

列名本物は"count(*)"の場合、行を辞書にキャストできます。

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

これが機能するためには(少なくともSQL Serverでは)、クエリは次のようなものである必要があります。

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

ただし、ほとんどの場合、列名前はありません、この場合:クエリを修正します; p

実際、私はおそらくあなたのクエリを修正すると言うでしょうとにかく;以下は、作業がはるかに簡単です。

select count(*) as [Count]
23
Marc Gravell

以下のようにデータを想定します

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