有没有一种方法可以通过字符串或索引访问Dapper FastExpando中的列?

| 我要插入一个“ 0”对象,并希望能够在运行时而不是在设计/编译时动态引用列名。因此,我希望能够执行以下操作:
var testdata = conn.Query(\"select * from Ride Where RiderNum = 21457\");
我希望能够执行以下操作:
foreach( var row in testdata) {
    var Value = row[\"PropertyA\"];
}
我了解我可以做到:
var Value = row.PropertyA;
但我无法执行此操作,因为要在运行时才知道我需要的属性名称。 这样的问题的答案是行不通的。我仍然得到同样的“ 4”例外。所以... 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\");
    
        有一种简单的方法可以直接访问示例下面的字段
string strConexao = WebConfigurationManager.ConnectionStrings[\"connection\"].ConnectionString;

conexaoBD = new SqlConnection(strConexao);
conexaoBD.Open();

var result = conexaoBD.Query(\"Select Field1,Field2 from Table\").First();

//access field value result.Field1 
//access field value result.Field2

if (result.Field1 == \"abc\"){ dosomething}
    

要回复问题请先登录注册