我在我的 ASP.NET MVC3 应用程序中运行查询以从数据库中获取一些数字:
var idQuery = "SELECT " + dynamicColumnName + " FROM " + dynamicTableName;
long[] idItems = db.Database.SqlQuery<long>(idQuery).ToArray();
但是,动态列有时是 int 类型int
,有时是long
. 我试过long
了,因为它涵盖了 int,但程序抛出了异常:
从具体化的“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
s 和long
s 运行我的查询?获取动态类型并将它们转换为对我来说很长的工作的方法,我可以在下面的代码行中使用 idItems。