无法隐式转换类型&#39; System.Collections.Generic.List&lt; <anonymous type:=“”>&gt;&#39;到&#39; System.Collections.Generic.List

时间:2017-05-14 05:41:09

标签: c# generics

我试图从我的数据库中返回一行,但是我收到以下错误

  

无法隐式转换类型&#39; System.Collections.Generic.List&lt;&lt;匿名类型:int Id,string File,string Name&gt;&gt;&#39;到&#39; System.Collections.Generic.List&lt; PDF.Models.EF_Model.PDF&GT;&#39;

这是在我的模型层中,在return语句中是发生错误的地方

internal List<EF_Model.PDF> Search_PDF(string _name)
{
    using (var Context = new EF_Model.CoolerEntities())
    {
        var p = (from c in Context.PDFs
                 where c.Name == _name
                 select new { c.Id, c.File, c.Name }).Single();
        return p;
    }
}

我还尝试将ToList()代替Single(),但它也无法正常工作,我们如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您的方法希望返回EF_Model.PDF,但您的linq查询会实例化匿名类型。

而是实例化PDF类型:

return from c in Context.PDFs
       where c.Name == _name
       select c;

或者:

internal List<EF_Model.PDF> Search_PDF(string _name)
{
    using (var Context = new EF_Model.CoolerEntities())
    {
        return Context.PDFs.Where(c => c.Name == _name).ToList();
    }
}