【问题标题】:System.Linq.IQueryable does not contain a definition for 'Where'System.Linq.IQueryable 不包含“Where”的定义
【发布时间】:2011-09-20 18:19:54
【问题描述】:

这里的情况很奇怪。由于某种原因,我无法在 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”的定义,并且找不到接受“System.Linq.IQueryable”类型的第一个参数的扩展方法“Where”(您是否缺少 using 指令或程序集参考?)

但我可以像这样调用.Where,它可以工作:

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

我不知道发生了什么。

【问题讨论】:

  • 只是为了确定,您是否在顶部包含了 using System.Linq?
  • 这两个代码 sn-ps 是否在同一个文件中?顶部有using System.Linq; 吗?

标签: c# asp.net linq entity-framework


【解决方案1】:

您需要在文件中添加一个 using System.Linq; (documentation) statement 指令在它不起作用的地方。 IEnumerable/IQueryable 的所有扩展方法分别在EnumerableQueryable 类中定义。

为了使用扩展方法,定义方法的类必须在范围内。我的猜测是您的第二个代码 sn-p 来自另一个文件,其中您确实有 using 语句。

【讨论】:

  • Tiny nitpick: using System.Linq; 是一个指令,而不是一个声明 :)
  • 相应编辑 Jon :) NP Steven.
  • 使用 System.LINQ 在我的顶部,我在函数中还有其他几个选择不会引发此错误>
  • @user1161391 那么你试图调用它的对象没有实现 IQueryable 或 IEnumerable。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多