gpt4 book ai didi

c# - 如何在 Dapper 中返回动态值

转载 作者:行者123 更新时间:2023-12-02 02:13:33 24 4
gpt4 key购买 nike

我有一个查询,我正在返回动态数据,但无法通过 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);

但是,当我执行以下操作时,我无法访问查询结果的任何成员:

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!

错误消息:

Error CS0021: Cannot apply indexing with [] to an expression of type 'object'

我如何到达我的字段?

最佳答案

解决方案是做这样的事情。您需要将查询的返回类型添加到dynamic,然后将每一行转换为 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"];
// ...
}

希望对其他人有帮助!

关于c# - 如何在 Dapper 中返回动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51237918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com