C# 无法隐式转换类型';System.Linq.IQueryable';至';System.Collections.Generic.List

C# 无法隐式转换类型';System.Linq.IQueryable';至';System.Collections.Generic.List,c#,entity-framework,linq,generics,C#,Entity Framework,Linq,Generics,我试图返回一个列表来显示我在一个表中的所有内容,该表的id等于_id(在第一个If语句中,否则返回all),但我得到了这个错误 无法将类型“System.Collections.Generic.List”(Project1.Models.EF_Model.Phone_book)隐式转换为“System.Collections.Generic.List”(Project1.Models.EF_Model.Phone_BookEntities1) 这是我的密码 public List<Mode

我试图返回一个列表来显示我在一个表中的所有内容,该表的id等于_id(在第一个If语句中,否则返回all),但我得到了这个错误

无法将类型“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();
        }
} 
公共列表选择(int?\u id)
{
var Ref_Phone=new Models.EF_Model.Phone_BookEntities1();
if(_id.HasValue)
{
返回Ref\u Phone.Phone\u book.Where(p=>p.Id==\u Id);//此处显示错误
}
其他的
{
Ref_Phone.Phone_book.ToList();
}
} 

我试图添加这个。ToList()不起作用,我不知道该怎么办。

只需删除
上的
)(Ref\u Phone
并将
.ToList()
放在linq表达式的末尾。

只需删除
上的
)(Ref\u Phone
并将
放在
.ToList()
在linq表达式的末尾。

您需要返回
电话簿的列表,而不是
模型。EF\u模型。电话簿实体1
,这是您的上下文类型:

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

} 
公共列表选择(int?\u id)
{
var Ref_Phone=new Models.EF_Model.Phone_BookEntities1();
return id.HasValue?Ref\u Phone.Phone\u book.Where(p=>p.id==\u id.ToList():Ref\u Phone.Phone\u book.ToList();
} 

您需要返回
电话簿的列表,而不是
模型.EF\u模型.Phone\u bookEntities 1
,这是您的上下文类型:

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

} 
公共列表选择(int?\u id)
{
var Ref_Phone=new Models.EF_Model.Phone_BookEntities1();
return id.HasValue?Ref\u Phone.Phone\u book.Where(p=>p.id==\u id.ToList():Ref\u Phone.Phone\u book.ToList();
} 

这没有多大帮助--请准确解释它不起作用的原因(编译器错误、意外结果等)或我们无能为力。这没有多大帮助--请准确解释它不起作用的原因(编译器错误、意外结果等)或者我们帮不上忙。非常感谢,可以用IF的正常形式而不是内联版本来写这个吗?或者这是必须用inline形式来完成的事情吗?当然,你可以用一个
IF
子句来做。我这样做是为了缩短它。非常感谢,可以用IF的正常形式而不是内联版本来写这个吗n?或者它必须以行的形式完成?当然,您可以使用
if
子句来完成。我这样做是为了缩短时间