由网友(提灯晚风)分享简介:我有一个查询,其中我返回动态数据,但无法通过Dapper检索其文档(https://github.com/StackExchange/Dapper)中列出的值。他们有如下代码示例:var rows = connection.Query("select 1 A, 2 B union all select 3, 4")...![我在qq 怎么找也找不到扩列,设置,动态下,联系人的地方东看也找不到扩列,我应该咋办,可以找到扩列](https://p.xsw88.cn/allimgs/daicuo/20230903/3217.png)
我有一个查询,其中我返回动态数据,但无法通过Dapper检索其文档(https://github.com/StackExchange/Dapper)中列出的值。
他们有如下代码示例:
var rows = connection.Query("select 1 A, 2 B union all select 3, 4");
Assert.Equal(1, (int)rows[0].A);
![我在qq 怎么找也找不到扩列,设置,动态下,联系人的地方东看也找不到扩列,我应该咋办,可以找到扩列](https://p.xsw88.cn/allimgs/daicuo/20230903/3217.png)
但是,当我执行以下操作时,我无法访问查询结果的任何成员:
var query = db.Query("SELECT SUM(UserRating) as 'Sum', AVG(UserRating) as 'Average', COUNT(*) as 'Total' FROM ActivityLogs");
query.FirstOrDefault(); // {{DapperRow, Sum= '3', Average = '3', Total = '1'}}
var sum = query[0].Sum; // error!
错误消息:
错误CS0021:无法对‘Object’类型的表达式应用带[]的索引
我如何到达我的田野?
推荐答案
解决方案如下所示。您需要将查询的返回类型添加到动态,然后将每一行转换为IDictionary<string, object>
。一旦这样做了,您将能够通过键获得查询的值,如下所示:
IEnumerable<dynamic> query = db.Query<dynamic>("SELECT SUM(UserRating) as 'Sum', AVG(UserRating) as 'Average', COUNT(*) as 'Total' FROM ActivityLogs");
foreach (var rows in query)
{
var fields = rows as IDictionary<string, object>;
var sum = fields["Sum"];
// ...
}
我希望它能帮助别人!
相关推荐
最新文章