5

在 MVC 中工作了几个月后,我回到了以前编写的 WebForms 3.5 应用程序中,我正在尝试用我学到的东西来修复我所能做的事情。

其中一部分是“具有局部视图的强类型模型”概念,这非常棒。通过继承我的自定义“ListTemplate”控件,我可以使用它的 GetModel() 方法来获得类似这样的东西:

<% List<Models.CaseStudy> model = GetModel<Models.CaseStudy>(); %>

然后我可以在模型上运行一个 foreach ,一切都很开心。但是,我想做一个分组,所以我添加了对:

<%@ Import Namespace="System.Linq" %>
<%@ Import Namespace="System.Linq.Expressions" %>

然后,使用稍微不太理想的语法,尝试了这个:

<% IEnumerable<IGrouping<string, Models.CaseStudy>> model = GetModel<Models.CaseStudy>().GroupBy(e => e.Client.Name); %>

但不是!“编译器错误消息:CS1525:无效的表达式术语'>'” - 它似乎是错误的 lambda。如果我将 GroupBy() 放在 foreach 参数中,它也不起作用。

有没有办法让 lambda 在 ASCX 文件中工作?

4

1 回答 1

5

根据错误消息,我的第一反应是说您使用的是 C# 2.0 编译器。

我不确定返回类型GetModel<T>是什么。但即使它是一个空方法,实际的 lambda 表达式也是一个有效的语法结构。它应该产生重载解决错误,而不是解析错误。

但是,在 C# 2.0 编译器中并非如此。这将是一个无效的语法结构,并会产生该错误消息。

您可以检查以确保您使用的是正确版本的 C# 编译器吗?

于 2009-07-02T12:16:22.723 回答