首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC动态编号类型

问ASP.NET MVC动态编号类型
EN

Stack Overflow用户
提问于 2013-01-12 19:19:25
回答 2查看 417关注 0票数 0

我正在我的ASP.NET MVC3应用程序中运行一个查询,以便从数据库中获得一些数字:

代码语言:javascript
复制
var idQuery = "SELECT " + dynamicColumnName + " FROM " + dynamicTableName;
long[] idItems = db.Database.SqlQuery<long>(idQuery).ToArray();

但是,动态列有时是int类型的int,有时是long。我尝试了long,因为它涵盖了int,但是程序抛出了异常:

从物化“System.Int32”类型到“System.Int64”类型的指定强制转换无效。

我尝试了dynamic类型,但是没有正确的数字:

代码语言:javascript
复制
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.IConverable”类型。

对于int和long的查询运行,我能做些什么?获得动态类型并将它们转换为long工作的方法,我可以在下面的代码行中使用idItems。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-12 22:38:41

我找到了一个没有动态类型的解决方案:

代码语言:javascript
复制
long[] idItems = new long[1];
long[] valueItems = new long[1];

try
{
    idItems = db.Database.SqlQuery<long>(idQuery).ToArray();
    valueItems = db.Database.SqlQuery<long>(valueQuery).ToArray();
}
catch (Exception e)
{
    int[] idItemsInt = db.Database.SqlQuery<int>(idQuery).ToArray();
    int[] valueItemsInt = db.Database.SqlQuery<int>(valueQuery).ToArray();
    idItems = new long[idItemsInt.Length];
    valueItems = new long[idItemsInt.Length];
    for (int i = 0; i < idItems.Length; i++)
    {
        idItems[i] = Convert.ToInt64(idItemsInt[i]);
        valueItems[i] = Convert.ToInt64(valueItemsInt[i]);
    }
}

这样,我首先得到长,如果类型是int,而不是得到int,然后将它们转换为long。如果我有一个动态类型,我总是会进行转换。因此,如果我的类型是长(一般是),我没有不必要的转换,我认为这是更快。

票数 0
EN

Stack Overflow用户

发布于 2013-01-12 19:45:21

试试普通的老object

代码语言:javascript
复制
object[] idItems = db.Database.SqlQuery<object>(idQuery).ToArray();
long[] idItemsLong = new long[idItems.Length];
for (int i = 0; i < idItemsLong.Length; i++)
{
    idItemsLong[i] = Convert.ToInt64(idItems[i]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14297013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档