c# - 如何使用字符串作为参数遍历 Dapper 动态查询结果?
问题描述
所以我遇到了这段代码:
dynamic account = conn.Query<dynamic>(@"
SELECT Name, Address, Country
FROM Account
WHERE Id = @Id", new { Id = Id }).FirstOrDefault();
Console.WriteLine(account.Name);
Console.WriteLine(account.Address);
Console.WriteLine(account.Country);
(如何使用 Dapper ORM 返回动态类型 List<dynamic>)。
我想知道如何使用字符串作为参数来做同样的事情。有点像这样:
dynamic account = conn.Query<dynamic>($@"
SELECT {commaseperated(parameters)}
FROM Account
WHERE Id = @Id", new { Id = Id }).FirstOrDefault();
Console.WriteLine(account[parameters[0]]);
Console.WriteLine(account[parameters[1]]);
其中parameters的类型是string[]。所有结果都是字符串类型,因此甚至可能不需要使用动态。
解决方案
我假设你可以做这样的事情:
string[] parameters = new string[] { "param1", "param2" };
dynamic account = conn.Query<dynamic>($@"SELECT {String.Join(",", parameters)} FROM Account WHERE Id = @Id", new { Id }).FirstOrDefault();
foreach (string s in parameters)
{
Console.WriteLine(account.GetType().GetProperty(s).GetValue(account, null));
}
Console.ReadLine();
推荐阅读
- c++ - 无法捕获 ImageMagick Image 构造函数异常
- python-3.x - 在 Python 脚本中将输出扩展到前 5 个电子邮件地址(从前 1 个)
- asp.net-core - 具有可选导航的 EF Core 中的自有类型
- c++ - 在编译时通过模板参数和 constexpr 语义生成浮点限制:
- vim - 修复 Tmux 中错误绑定的键
- c++ - 重载 operator= 用于 char*
- django - jwt 令牌授权无法与自定义角色一起正常工作
- html - 如何在数据表 jquery 中进行如下图所示的分页设计
- java - 可完成的未来浪费更多时间?
- java - Maven/Surefire 无法在同一个项目中执行 Spock 和 JUnit