ASP.NET MVC3アプリケーションでクエリを実行して、データベースからいくつかの数値を取得しています。
var idQuery = "SELECT " + dynamicColumnName + " FROM " + dynamicTableName;
long[] idItems = db.Database.SqlQuery<long>(idQuery).ToArray();
ただし、動的列はint型int
の場合もあれば、。の場合もありlong
ます。intをカバーしているので試しlong
ましたが、プログラムは例外をスローしました:
マテリアライズされた「System.Int32」タイプから「System.Int64」タイプへの指定されたキャストは無効です。
タイプを試しましたdynamic
が、数字を正しく取得できませんでした。
dynamic[] idItems = db.Database.SqlQuery<dynamic>(idQuery).ToArray();
long[] idItemsLong = new long[idItems.Length];
for (int i = 0; i < idItemsLong.Length; i++)
{
idItemsLong[i] = Convert.ToInt64(idItemsLong[i]);
}
例外をスローします:
タイプ「System.Object」のオブジェクトをタイプ「System.IConvertible」にキャストできません。
int
との両方でクエリを実行するにはどうすればよいlong
ですか?動的型を取得して長いものに変換する方法は、次のコード行でidItemsを使用できる限り使用できます。