c# - 为什么我不能让 LINQ 在我的 .cshtml 文件中工作?

标签 c# asp.net-mvc linq asp.net-mvc-4 razor

我在 VS 2017 中工作,目标是 .NET Framework 4.6.2,我在几个不同的项目中遇到过这个问题。我相信这些项目最初是在 VS 2012 中创建的,物有所值。

我能够在任何 .cs 文件中毫无问题地使用 Linq 扩展和查询语法,但是如果我在 .cshtml razor 文件中尝试这样一行:

@{
    var activeCategories =  Model.Categories.Where(x => x.Articles.Count > 0).Count();
 }

<p>Active Categories: @activeCategories</p>

我收到这样的错误:

List<Category> does not contain a definition for 'Where', and the closest Extension method 
accepting a first argument of type List<Category> could not be found (are you missing a 
using directive or an assembly reference?)`

我尝试将 using System.Linq; 添加到 .cshtml 文件的顶部,但它显示无法找到的错误。

我已经更新了 Views 文件夹下的 Web.config 以包含 System.Linq,我已经检查过并且该项目正在引用 System.Core ,并且我已经清除了 %LOCALAPPDATA%/Microsoft/VisualStudio/15.0_ba2c3fe6/ComponentModelCache 中的项目。

所有关于是否在 View 中使用 LINQ 的哲学,这不应该发生,对吧?当我使用这些旧项目创建新的 ASP.NET MVC 项目时,这不是问题。

我还假设这与我的本地环境有关,因为其他开发人员在他们的机器上似乎没有这个问题。

为什么会发生这种情况,我该如何解决?

最佳答案

需要在主 Web.config 文件中添加 System.Core 引用。

<compilation>
  <assemblies>
    <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

关于c# - 为什么我不能让 LINQ 在我的 .cshtml 文件中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764255/

相关文章:

c# - C# 编译器可以在泛型类型上使用带有 foreach 的鸭子类型(duck typing)吗?

c# - Entity Framework Core - 派生类的多个鉴别器

c# - Facebook 相册创建和照片上传

.net - 在 ASP.NET MVC 中获取原始请求

performance - Entity Framework 生成的 SQL 缺少联接

c# - 在 C# 中解析 XML 文件

c# - 插入命令的单元测试

c# - 用于图像扩展的 ASPNET Core img src 通配符

c# - ASP.MVC 参数未传递给 http post 的 Action 方法

c# - 最佳年龄算法?