如何解决有没有一种方法可以通过字符串或索引访问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}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。