System.Linq.IQueryable不包含'Where'的定义

Ste*_*ven 38 c# linq asp.net entity-framework

这里很奇怪的情况.出于某种原因,我无法在IQueryable对象上调用"Where"或任何其他函数.

这就是我所拥有的:

public IQueryable<Employee> Employees
{
    get { return _entities.Employees.AsQueryable(); }
}


public ActionResult Index()
{
    return View(new HomeViewModel
        {
            Employees = Employees.Where(e => e.Active == true)
        });
}
Run Code Online (Sandbox Code Playgroud)

但Intellisense没有选择Where函数,我得到一个Build Error,它说:

'System.Linq.IQueryable'不包含'Where'的定义,也没有扩展方法'Where'可以找到接受类型'System.Linq.IQueryable'的第一个参数(你是否缺少using指令或汇编引用?)

但是我可以.Where像这样打电话它起作用:

public IQueryable<Employee> Employees
{
    get { return _entities.Employees.AsQueryable().Where(e => e.Active == true); }
}
Run Code Online (Sandbox Code Playgroud)

我不知道是怎么回事.

Chr*_*ain 61

您需要添加"using System.Linq ;"声明文件中的指令不起作用.IEnumerable/IQueryable的所有扩展方法分别在EnumerableQueryable类中定义.

为了使用扩展方法,定义方法的类必须在范围内.我的猜测是你的第二个代码片段来自另一个你拥有using语句的文件.

  • 微小的挑剔:`使用System.Linq;`是一个指令,而不是一个声明:) (13认同)