针对Linq用户的问题:每当我尝试从Linq查询中获取一个IEnumerable并在此之后从revs中进行操作时,出现“InvalidCastexception: Specified cast is not valid”错误。数据库已填充,应该返回值。
具体而言,错误发生在这一行:List<PDP> rev = revs.ToList<PDP>();
有任何想法是怎么回事吗?
short ret;
using (DataContext db = new DataContext())
{
var play = from p in db.PDP
where p.ID == id
select p;
var revs = play.OrderByDescending(p => p.revision);
List<PDP> rev = revs.ToList();
var revNum = revs.ToList().Count() > 0 ? rev.First().revision : 0;
ret = (short)revNum;
}
编辑
我已经澄清了代码的某些部分。
编辑2
rev
是一个调试变量,用于缩小错误范围。
原始代码如下:
short ret;
using (GasForecastDataContext db = new GasForecastDataContext())
{
var play = from p in db.PDP
where p.Play_ID == play_id
select p;
var revs = play.OrderByDescending(p => p.revision);
var revNum = revs.Count > 0 ? rev.First().revision : 0;
ret = (short)revNum;
}
ToEnumerable
。你在哪里得到了异常? - Andrewvar rev = revs.ToList();
有帮助吗? - asawyerrevs
上调用了两次ToList()
。相反,你应该在赋值revs
时调用ToList()
,使其成为List<T>
类型而不是IEnumerable<T>
类型(如果这是你想要的)。此外,在List<T>
上不需要调用Count()
。只需使用更高效的Count
属性即可。 - Martin Liversage