Подтвердить что ты не робот

Есть ли способ получить доступ к столбцам в Dapper FastExpando через строку или индекс?

Я вытягиваю объект 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?

4b9b3361

Ответ 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");

Ответ 2

Относительно части заголовка или индекса? - Мне нужно было получить результаты по индексу, поскольку имена столбцов, которые были возвращены, иногда менялись, поэтому вы можете использовать вариант ответа Сэма Шаффрона следующим образом:

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