【问题标题】:Unable to convert AnonymousType#1 ti IEnumerable无法转换 AnonymousType#1 ti IEnumerable
【发布时间】:2017-04-19 14:30:11
【问题描述】:

我已经在我的 .cs 页面中声明了一个模型

public class InstrumentDetails
{
    public long PullNo { get; set; }
    public string Description { get; set; }
    public int New { get; set; }
    public int LN { get; set; }
    public int PR { get; set; }
    public int Any { get; set; }
}

之后我以这种方式检索数据:

IEnumerable<InstrumentDetails> instrumentdetails = (from p in NemcDb.tblPulls
    join
    pi in NemcDb.tblPullInstruments
    on
    p.PullId equals pi.PullId
    join
    i in NemcDb.tblInstruments
    on
    pi.InstrumentCode equals i.InstrumentCode
    select new
    {
        PullNo = p.PullNo.Value,
        InstrumentType = i.Description,
        New = pi.NewQuantity,
        LN = pi.LNQuantity,
        PR = pi.UsedQuantity,
        Any = pi.AnyQuantity
    }).Where(i => i.PullNo.ToString() == item);

但它给了我错误

无法将“System.Linq.IQueryable”转换为“System.Collections.Generic.IEnumerable”。存在显式转换(您是否缺少演员表?)

我哪里错了?...我无法通过...请帮助。

【问题讨论】:

  • Where 之后致电ToListToArray
  • @KennethK。这不会改变任何事情。
  • 它没有工作...无论如何感谢您的帮助
  • 你在哪里初始化InstrumentDetails的实例? select new 不是 select new InstrumentDetails
  • 正是......我只是错过了

标签: c# linq ienumerable anonymous-types


【解决方案1】:

你没有告诉你想要一个InstrumentDetails 类型的对象,你创建了一个匿名类型。将select new { ... 更改为select new InstrumentDetails { ...,然后在最后调用ToList()ToEnumerable()ToArray(),以便实际运行查询。

【讨论】:

    【解决方案2】:

    答案是:

                IEnumerable<InstrumentDetails> instrumentdetails = (from p in NemcDb.tblPulls
                                                                join
                                                                pi in NemcDb.tblPullInstruments
                                                                on
                                                                p.PullId equals pi.PullId
                                                                join
                                                                i in NemcDb.tblInstruments
                                                                on
                                                                pi.InstrumentCode equals i.InstrumentCode
                                                                select new InstrumentDetails
                                                                {
                                                                    PullNo = p.PullNo.Value,
                                                                    InstrumentType = i.Description,
                                                                    New = pi.NewQuantity,
                                                                    LN = pi.LNQuantity,
                                                                    PR = pi.UsedQuantity,
                                                                    Any = pi.AnyQuantity
    
                                                                }).Where(i => i.PullNo.ToString() == item).ToList();
    
        }
    

    我真傻…………

    【讨论】:

    • 其他人正确回答了您的问题,但您没有给予他们信任,而是使用完全相同的信息自行重新回答。
    • 答案之间相差 10 秒,可能是巧合,投票萨米人答案,因为它解释了问题的原因
    • @Aaron 这个答案发布于之前另一个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多