Dapper.netは辞書にクエリを使用します

c# dapper

質問

私のSQLは:

select (select count(*) from TblRMember where sex=1) male,
 (select count(*) from TblRMember where sex=2) female,
 (select count(*) from TblRMember where sex=0) unkown

私はDapper.Netに次のようなDictinaryを返すようにします:

Keys:male,female,nukown
Value:10,30,50

Dapper Dot Netを使用してデータベース結果から辞書オブジェクトにマップする方法を見てきましたか?しかし、それは動作しません!

ToDictionaryやその他の方法で実装したい

var myDictionary = sqlConnection.Query(strSql).ToDictionary(??);

ありがとう!

受け入れられた回答

最初にクエリを1つに変更します。

select case when sex = 1 then 'male'
            when sex = 2 then 'female'
            when sex = 0 then 'unknown'
       end as sex, count(*) as cnt
from TblRMember
group by sex

私はsexが数値であるので、あなたは名前(性別?)でcoumnを選択するか、コード内で変更する必要があります。その後:

var myDictionary = sqlConnection.Query(strSql)
                    .ToDictionary(x => x.sex.ToString(), x => (int)x.cnt);

人気のある回答

string strSql = "SELECT DISTINCT TableID AS [Key],TableName AS [Value] FROM dbo.TS_TStuctMaster";
Dictionary<string,string> dicts = sqlConnection.Query<KeyValuePair<string,string>>(strSql).ToDictionary(pair => pair.Key, pair => pair.Value);

エイリアスと強力な型を使用できます。

KeyValuePairタイプのKeyとValueの属性に一致するエイリアスがキーポイントです。

それは強い入力の下で動作し、うまく動作します。

私はダイナミックタイプが嫌いです。それは特定の状況で災害をもたらす。さらに、ボクシングとunboxingはパフォーマンスの損失をもたらします。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow