首页 > 解决方案 > 如何使用字符串作为参数遍历 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[]。所有结果都是字符串类型,因此甚至可能不需要使用动态。

标签: c#dynamicdapper

解决方案


我假设你可以做这样的事情:

        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();

推荐阅读