-1

我的 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 像这样返回字典:

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

我已经看到如何使用 Dapper Dot Net 从数据库结果映射到 Dictionary 对象?,但这行不通!

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

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

谢谢!

4

2 回答 2

5

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

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);
于 2013-07-18T07:35:25.860 回答
1
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的属性。

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

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

于 2018-08-13T05:07:56.253 回答