繁体   English   中英

Dapper.net使用查询进入字典

[英]Dapper.net use query into the Dictionary

我的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从数据库结果映射到Dictionary对象? ,但是那行不通!

如何使用ToDictionary或其他我想要的方式

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

谢谢!

首先将您的查询更改为单个查询:

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是数字,因此您必须按名称(性别名称)进行选择,或者在代码中进行更改。 之后:

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类型的“键”和“值”的属性匹配。

它在强类型下工作并且运行良好。

我不喜欢动态类型。 在某些情况下会带来灾难。 而且,装箱和拆箱会带来性能损失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM