文字列やインデックスを使ってDapper FastExpandoの列にアクセスする方法はありますか?

c# dapper dynamic

質問

私は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;

私が必要としているプロパティの名前は実行時まで知ることができないので、私はそれを行うことはできません。

このSOの質問からの答えは機能しません。私はまだ同じ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");

人気のある回答

タイトル「インデックス」の部分について - 返される列名が時々変更されたので、索引で結果にアクセスする必要があったので、Sam Saffronの答えのバリエーションを次のように使用できます。

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


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow