我有一个查询,查询中我要返回动态数据,并且无法通过其文档(https://github.com/StackExchange/Dapper)中列出的Dapper检索值。
他们有类似的代码示例,
hbox.maxHeightProperty().bind([???].heightProperty());
ROW_CONSTRAINT = new RowConstraints(30, 30, Integer.MAX_VALUE,
Priority.ALWAYS, VPos.TOP, true); // all rows other than the header has this constraint.
但是,当我执行以下操作时,我无法访问查询结果的任何成员:
var rows = connection.Query("select 1 A, 2 B union all select 3, 4");
Assert.Equal(1, (int)rows[0].A);
错误CS0021:无法将带有[]的索引应用于类型为'object'的表达式
我如何进入我的领域?
答案 0 :(得分:1)
解决方案是执行类似的操作。您需要将查询的返回类型添加到 dynamic ,然后将每一行强制转换为/suppliers/{supplierNumber}
。完成此操作后,您将可以通过键来获取查询的值,如下所示:
product1 -> supplier1
product2 -> supplier2
product3 -> supplier3
我希望它可以帮助其他人!
答案 1 :(得分:1)
如果您使用的是C#7或更高版本,则还可以使用value tuples来映射返回的行。这样可以避免使用dynamic
,并具有更好的类型安全性。
问题查询可能如下所示(添加了换行符以防止滚动):
var query = db.Query<(int Sum, int Average, int Total)>(@"
SELECT SUM(UserRating) as 'Sum',
AVG(UserRating) as 'Average',
COUNT(*) as 'Total'
FROM ActivityLogs");
var firstSum = query.FirstOrDefault().Sum;