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

时间:2011-09-20 18:19:54

标签: c# asp.net linq 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)
        });
}

但Intellisense没有选择Where函数,我得到一个构建错误,上面写着:

  

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

但是我可以像这样打电话给.Where并且它有效:

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

我不知道发生了什么。

1 个答案:

答案 0 :(得分:56)

您需要添加“使用System.Linq;” statement 指令在文件中不起作用。 IEnumerable / IQueryable的所有扩展方法分别在EnumerableQueryable类中定义。

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