有没有办法通过字符串或索引访问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 Invocation
exception。 所以…
有没有办法用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");