IEnumerable可以工作,但找不到类型或命名空间IQueryable-MVC 5

本文关键字:类型 命名空间 IQueryable-MVC 找不到 工作 IEnumerable | 更新日期: 2023-09-27 18:19:52

我正在使用MVC5并尝试制作一个简单的列表。我使用了脚手架,它在控制器中创建了IQueryable模型,在视图中创建了IEnumerable模型。我正试图将视图更改为IQueryable,但该视图在"Type"或"namespace"上出现编译错误。找不到"IQueryaable"(您是否缺少using指令或程序集引用?)""

<!-- 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的新手。我在我的web应用程序和数据项目中都引用了System.Core.dll。

当我运行时,我得到以下异常:错误CS1061:"IQueryable"不包含"MyTableName"的定义,并且找不到接受"IQueriable"类型的第一个参数的扩展方法"MyTableName"(是否缺少using指令或程序集引用?)

我想要IQueryable,因为1)有很多数据,2)我将使用Infrastics控件(目前不在页面中)。我只想得到我需要的数据。(我是Infrastics的新手,但所有Infrastics参考资料都不在页面上。)

有什么建议吗?谢谢

IEnumerable可以工作,但找不到类型或命名空间IQueryable-MVC 5

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

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

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

根据文档:"IQueryable接口继承了IEnumerable接口,因此如果它表示查询,则可以枚举该查询的结果。枚举会导致执行与IQueryaable对象关联的表达式树。"