web-dev-qa-db-ja.com

Dapper-動的オブジェクトの操作方法

Dapperを使用してSQLからクエリを実行し、動的クエリを実行しています。

var returns = conn.Query(dynamicQuery);

その後、結果を循環するときに、処理している日付のタイプを知りたいので、次のことを試みました。

foreach (var result in results)
{
    MessageBox.Show(result.GetType().ToString());
}

しかし、常にMessageBoxで失敗し、エラーCannot perform runtime binding on a null referenceが発生します。

代わりにこれを使用すると:

var returns = conn.Query<object>(dynamicQuery);

その後、コマンドは機能しますが、Dapper.SqlMapper+DapperRowオブジェクトタイプが表示されます。

dynamic変数のタイプを見つけるにはどうすればよいですか?

18
cogumel0

動的APIでは、列という形で形状を知っていることが期待されます。

foreach(dynamic row in query) {
    int id = row.Id;
    //...
}

ただし、各行はIDictionary<string, object>も実装します。明確でない場合は、キャストしてください。

または、(コメント)タイプが日付時刻のセルが1つあることがわかっている場合:

var when = conn.Query<DateTime>(...).Single();
19
Marc Gravell