c# - Linq 结果到 IEnumerable 无效转换

标签 c# .net linq ienumerable

Linq 用户的问题:我得到一个 InvalidCastexception: Specified cast is not valid每当我试图获得 IEnumerable来自 revs在进行 Linq 查询之后。数据库已填充,它应该返回值。

具体来说,错误发生在 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;
}

最佳答案

您声明“rev”列表变量是否有特定原因? “Count()”和“First()”在 IEnumerable 接口(interface) (“revs”) 上可用。

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);

    ret = (short) revs.Count() > 0 ? revs.First().revision : 0;
}

关于c# - Linq 结果到 IEnumerable 无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444472/

相关文章:

c# - 仅存储过程中的一列

c# - .NET 相互 SSL 握手 'Client Authentication'

c# - 如何在C#函数中接受多种类型的对象?

c# - 使用 Linq to Objects 合并目录中的文件

c# - 如何让 Json Serialize 忽略字典键

c# - KeyValuePair 与 NameValueCollection

c# - ListView ItemActivate 延迟

c# - 使用密码在 .net 中创建 zip 文件

c# - 如何在 Linq 上获得左连接

c# - 没有时间部分的日期时间比较?