Ответ 1
Конечно, на самом деле это проще, чем это:
var sql = "select 1 A, 'two' B";
var row = (IDictionary<string, object>)connection.Query(sql).First();
row["A"].IsEqualTo(1);
row["B"].IsEqualTo("two");
Я вытягиваю объект Dapper FastExpando
и хочу иметь возможность ссылаться на имена столбцов динамически во время выполнения, а не во время проектирования/компиляции. Поэтому я хочу иметь возможность сделать следующее:
var testdata = conn.Query("select * from Ride Where RiderNum = 21457");
Я хочу иметь возможность сделать следующее:
foreach( var row in testdata) {
var Value = row["PropertyA"];
}
Я понимаю, что могу сделать:
var Value = row.PropertyA;
но я не могу этого сделать, поскольку имя свойства, которое мне понадобится, не будет известно до выполнения.
Ответ этого СОПРОТИВЛЕНИЯ не работает. Я все еще получаю исключение Target Invocation
. Так что...
Есть ли способ сделать то, что я хочу делать с Dapper FastExpando?
Конечно, на самом деле это проще, чем это:
var sql = "select 1 A, 'two' B";
var row = (IDictionary<string, object>)connection.Query(sql).First();
row["A"].IsEqualTo(1);
row["B"].IsEqualTo("two");
Относительно части заголовка или индекса? - Мне нужно было получить результаты по индексу, поскольку имена столбцов, которые были возвращены, иногда менялись, поэтому вы можете использовать вариант ответа Сэма Шаффрона следующим образом:
var sql = "select 1, 'two'";
var row = (IDictionary<string, object>)connection.Query(sql).First();
row.Values.ElementAt(0).IsEqualTo(1);
row.Values.ElementAt(1).IsEqualTo("two");