有沒有辦法通過字符串或索引訪問Dapper FastExpando中的列?

c# dapper dynamic

我正在使用Dapper FastExpando對象,並希望能夠在運行時而不是在設計/編譯時動態引用列名。所以我希望能夠做到以下幾點:

var testdata = conn.Query("select * from Ride Where RiderNum = 21457");

我希望能夠做到以下幾點:

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

我明白我能做到:

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合法嗎? 是的,了解原因