【问题标题】:Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Collections.Generic.List无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.List”
【发布时间】:2016-08-30 14:59:04
【问题描述】:

我正在尝试返回一个列表以显示我在其 id 等于 _id 的表中的所有内容(在第一个 If 语句中,否则返回全部)但我收到此错误

无法将类型 'System.Collections.Generic.List (Project1.Models.EF_Model.Phone_book) 隐式转换为 'System.Collections.Generic.List(Project1.Models.EF_Model.Phone_BookEntities1)

这是我的代码

public List<Models.EF_Model.Phone_BookEntities1> Select(int? _id)
{
       var Ref_Phone = new Models.EF_Model.Phone_BookEntities1();
        if (_id.HasValue)
        {
            return Ref_Phone.Phone_book.Where(p => p.Id == _id); //here error shows up
        }
        else
        {
            Ref_Phone.Phone_book.ToList();
        }
} 

我试图添加这个 .ToList() 它不起作用我不知道该怎么做

【问题讨论】:

    标签: c# entity-framework linq generics


    【解决方案1】:

    您需要返回Phone_book 的列表,而不是您的上下文类型Models.EF_Model.Phone_BookEntities1

    public List<Models.EF_Model.Phone_book> Select(int? _id)
    {
        var Ref_Phone = new Models.EF_Model.Phone_BookEntities1();
        return id.HasValue? Ref_Phone.Phone_book.Where(p => p.Id == _id).ToList():Ref_Phone.Phone_book.ToList();
    
    } 
    

    【讨论】:

    • 非常感谢,是否可以用普通的 IF 形式而不是内联版本来写这个?或者它必须以行的形式完成?
    • 当然,您可以使用if 子句来实现。我这样做是为了缩短时间
    【解决方案2】:

    只需删除(Ref_Phone 上的( 并将.ToList() 放在linq 表达式的末尾即可。

    【讨论】:

    • 这不是很有帮助——准确解释它为什么不起作用(编译器错误、意外结果等)或者我们无能为力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多