有没有办法通过字符串或索引访问Dapper FastExpando中的列?

我正在使用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 Invocationexception。 所以…

有没有办法用Dapper FastExpando做我想做的事情?

当然,它实际上比那更容易:

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

关于标题“或索引”的部分? – 我需要按索引访问结果,因为有时会返回返回的列名,所以你可以使用Sam Saffron的答案变体:

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