如何将var转换为长数组?

时间:2015-06-24 04:45:56

标签: c# sql-server asp.net-mvc linq-to-sql

以下方法返回long数组。但是当我运行它时,得到错误:

  

指定的演员表无效。

Gson gson = new GsonBuilder().create();
    gson.fromJson(json, GradeList.class);

此错误发生在:

public long[] GetLastMonthConsume(long metid)
{

   var lastconsume = (from itm in db.tblMonthConsumes
                            where itm.MetID_FK == metid && itm.MonthConsumeDate ==
                                (from itm2 in db.tblMonthConsumes
                                 where itm2.MeterID_FK == metid
                                 select itm2.MonthConsumeDate).Max()
                            select new
                            {
                                itm.MonthConsumeTotal,
                                itm.MonthConsumeTotalFuncHour
                            }).ToList();

    return lastconsume.Cast<long>().ToArray();
}

(MonthConsumeTotalFuncHour,MonthConsumeTotal)的数据类型很长。

这个演员是错的吗?如何获取查询的输出并转换为long ???

的数组

2 个答案:

答案 0 :(得分:1)

您可能需要返回2d数组。

public long[][] GetLastMonthConsume(long metid)
{

   var lastconsume = (from itm in db.tblMonthConsumes
                            where itm.MetID_FK == metid && itm.MonthConsumeDate ==
                                (from itm2 in db.tblMonthConsumes
                                 where itm2.MeterID_FK == metid
                                 select itm2.MonthConsumeDate).Max()
                            select new
                            {
                               total = (itm.MonthConsumeTotal!= null && itm.MonthConsumeTotal.HasValue) ? itm.MonthConsumeTotal.Value : 0,
                               hour = (itm.MonthConsumeTotalFuncHour!= null && itm.MonthConsumeTotalFuncHour.HasValue) ? itm.MonthConsumeTotalFuncHour.Value : 0
                            }).ToList();

    return lastconsume.Select(t => new long[] {t.total , t.hour }).ToArray();
}

答案 1 :(得分:0)

lastConsume是您使用的匿名类型对象列表:

select new
{
   itm.MonthConsumeTotal,
   itm.MonthConsumeTotalFuncHour
}

现在你试图将它转换为显然不兼容的long。因此,编译器显示错误。

如果您希望返回带有两个长号的项目列表,则必须更改方法签名。