IEnumerable有效但无法找到类型或命名空间IQueryable - MVC 5

时间:2015-10-30 16:45:22

标签: c# asp.net-mvc-5 ienumerable iqueryable

我正在使用MVC5并尝试制作一个简单的列表。我使用了scaffolding,它在Controller中创建了IQueryable模型,在View中创建了IEnumerable。我试图将视图更改为IQueryable,但该视图会在'类型或命名空间上产生编译错误' IQueryable'找不到(你错过了使用指令或汇编引用吗?)'

<!-- Index.cshtml -->
@using System.Linq    <!-- flags as 'previously appears in namespace' -->
@model IEnumerable<MyTableName> <!-- compiles and displays -->
@model IQueryable<MyTableName> <!-- doesn't compile, throws exception --> 

我所有的项目都是4.5.2。我是MVC / EF的新手。我在我的网络应用程序和我的数据项目中引用System.Core.dll。

当我跑步时,我得到以下例外:错误CS1061:&#39; IQueryable&#39;不包含&#39; MyTableName&#39;的定义没有扩展方法&#39; MyTableName&#39;接受第一个类型&#39; IQueryable&#39;可以找到(你错过了使用指令或程序集引用吗?)

我想要IQueryable因为1)有很多数据和2)我将使用Infragistics控件(当前不在页面中)。我想只获取我需要的数据。 (我是Infragistics的新手,但所有Infragistics参考都不在页面内。)

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:0)

VIEWS\web.config(不是根目录中的web.config)中,将名称空间System.Linq添加到以下部分:

<configuration>
  ...
  <system.web.webPages.razor>
    ...
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
         <add namespace="System.Linq" />

答案 1 :(得分:0)

您希望在视图中使用IEnumerable,因为它会使IQueryable对象被执行。

来自documentation: “IQueryable接口继承IEnumerable接口,因此如果它表示查询,则可以枚举该查询的结果。枚举导致与IQueryable对象关联的表达式树被执行。”

相关问题