LINQ의 동적 인 Dapper 반환 키 값 쌍을 처리하는 방법

c# dapper dapper-extensions linq

문제

나는 Dapper를 처음 접했습니다. 내가 무엇을 성취하려고하는지 설명하겠습니다. 나는 DB에서 열을 반환하는 간단한 쿼리를 가지고 있는데, 데이터를 채우기 위해 Entity (Property) 클래스를 만들고 싶지 않습니다. 나는 이것을 위해 Dynamic Type을 사용하고 싶다. 아래는 내 코드입니다.

public dynamic GetABC(int year)
    {

        using (var db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
        {

            string query = string.Format(@"SELECT * FROM ranking where YEAR(eventdate)='{0}') ORDER BY eventdate DESC, eventid ASC",year);
            //return db.Query<RankingEntity>(query, commandType: System.Data.CommandType.Text).AsList();
            var a = (IEnumerable<dynamic>)db.Query(query, null, null, true, null, CommandType.Text).ToList();
            return a;
       }
    }

나에게 키 값 쌍을 반환합니다. 아래처럼 : 대퍼 행

어떤 방법이 있나, 그냥 List를 "Property"= "Value"로 가져 오는 일반적인 방법을 하나 작성한다. 일반적으로 Entity Class를 사용할 때 얻는다.

달성 가능한지 확실하지 않지만 가능하다면 배우고 싶습니다. 그리고 우리의 어플리케이션에 구현하고 싶습니다.

나는 내가 원하지 않는 대 루프를 통해 루프를 구현함으로써이를 달성 할 수있다. 왜냐하면 10000 개의 행이있을 경우 루프가 10000 번 반복하기 때문입니다.

미리 감사드립니다.

인기 답변

DapperRowIDictionary 인터페이스를 구현하므로 DapperRow 는 Dapper의 내부 클래스이며 IDictionary<string,object> 직접 유형 변환 할 수 있습니다. 당신이해야 할 일은 모두 :

var a = db.Query(query, null, null, true, null, CommandType.Text).Select(x => x as IDictionary<string,object>);

결과는 열 이름이 키이고 각 행 값이 IEnumerable 의 각 요소 값이기 때문에 필요한 모든 정보를 추출하는 데 사용할 수있는 IEnumerable<IDictionary<string,object>> 유형의 결과가됩니다.

또한 확인하십시오,이 너무 작동 할 수 있지만 잘 모르겠습니다 :

 var a = (IEnumerable<IDictionary<string,object>>)db.Query(query, null, null, true, null, CommandType.Text);


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow