사전에 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(??);

감사!

수락 된 답변

먼저 쿼리를 단일 쿼리로 변경하십시오.

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을 이름 (sexname?)으로 선택하거나 코드에서 변경해야합니다. 그 후 :

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
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.