문자열이나 인덱스를 통해 Dapper FastExpando의 열에 액세스 할 수 있습니까?

c# dapper dynamic

문제

Dapper FastExpando 객체를 가져오고 있으며 런타임에 디자인 / 컴파일시보다 동적으로 열 이름을 참조 할 수 있기를 원합니다. 그래서 나는 다음과 같은 일을 할 수 있기를 바란다.

foreach( var row in testdata) {
    var Value = row["PropertyA"];
}

나는 다음을 할 수 있기를 바란다.

foreach( var row in testdata) {
    var Value = row["PropertyA"];
}

내가 할 수 있음을 이해합니다.

foreach( var row in testdata) {
    var Value = row["PropertyA"];
}

하지만 내가 할 재산의 이름은 런타임까지 알 수 없기 때문에 나는 그것을 할 수 없다.

이 SO 질문 에서 대답은 작동하지 않습니다. 여전히 동일한 Target Invocation 예외가 발생합니다. 그래서...

Dapper FastExpando로하고 싶은 일을 할 수있는 방법이 있습니까?

수락 된 답변

물론, 실제로는 그 방법보다 쉽습니다.

var sql = "select 1 A, 'two' B";
var row = (IDictionary<string, object>)connection.Query(sql).First();
row["A"].IsEqualTo(1);
row["B"].IsEqualTo("two");

인기 답변

제목 "또는 색인?" - 반환되는 열 이름이 가끔 변경 되었기 때문에 인덱스별로 결과에 액세스해야하므로 Sam Saffron의 답변을 다음과 같이 변형 할 수 있습니다.

var sql = "select 1, 'two'";
var row = (IDictionary<string, object>)connection.Query(sql).First();
row.Values.ElementAt(0).IsEqualTo(1);
row.Values.ElementAt(1).IsEqualTo("two");



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