如何将 var 转换为长数组?
how to cast var to long array?
下面的方法returns long数组。但是当我 运行 它时,出现错误:
specified cast is not valid.
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();
}
此错误发生在:
return lastconsume.Cast<long>().ToArray();
(MonthConsumeTotalFuncHour,MonthConsumeTotal) 的数据类型很长。
这个演员表有误?如何获取查询的输出并转换为长数组???
lastConsume
是您使用的匿名类型对象的列表:
select new
{
itm.MonthConsumeTotal,
itm.MonthConsumeTotalFuncHour
}
现在您正试图将其转换为显然不兼容的 long。因此,编译器显示错误。
如果您希望 return 包含两个长数字的项目列表,则必须更改方法签名。
您可能需要 return 二维数组。
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();
}
下面的方法returns long数组。但是当我 运行 它时,出现错误:
specified cast is not valid.
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();
}
此错误发生在:
return lastconsume.Cast<long>().ToArray();
(MonthConsumeTotalFuncHour,MonthConsumeTotal) 的数据类型很长。
这个演员表有误?如何获取查询的输出并转换为长数组???
lastConsume
是您使用的匿名类型对象的列表:
select new
{
itm.MonthConsumeTotal,
itm.MonthConsumeTotalFuncHour
}
现在您正试图将其转换为显然不兼容的 long。因此,编译器显示错误。
如果您希望 return 包含两个长数字的项目列表,则必须更改方法签名。
您可能需要 return 二维数组。
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();
}