以下方法返回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 ???
的数组答案 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。因此,编译器显示错误。
如果您希望返回带有两个长号的项目列表,则必须更改方法签名。