Как выполнить запрос l oop через Dapper Dynami c с использованием строк в качестве параметров? - PullRequest
0 голосов
/ 18 июня 2020

Итак, я наткнулся на этот код:

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

( Как вернуть динамический c список типов с помощью Dapper ORM ).

I было интересно, как я могу сделать то же самое, используя строки в качестве параметров. Примерно так:

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

Где параметры имеют тип string []. Все результаты имеют строковый тип, поэтому использование динамического c может даже не потребоваться.

1 Ответ

0 голосов
/ 18 июня 2020

Я полагаю, вы могли бы сделать что-то вроде этого:

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