这里非常奇怪的情况。出于某种原因,我不能在我的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); }
}
我不知道发生了什么。
答案 0 :(得分:56)
您需要添加“使用System.Linq;” statement 指令在文件中不起作用。 IEnumerable / IQueryable的所有扩展方法分别在Enumerable和Queryable类中定义。
为了使用扩展方法,定义方法的类必须在范围内。我的猜测是你的第二个代码片段来自另一个你拥有using语句的文件。