Linq Lambda支持WebForms ASCX

时间:2009-07-02 12:05:35

标签: c# linq webforms lambda ascx

在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:无效的表达式术语'&gt;'” - 它似乎是错误的lambda。如果我将GroupBy()放在foreach参数中,它就不起作用。

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

1 个答案:

答案 0 :(得分:5)

根据错误消息,我的第一直觉就是说你正在使用C#2.0编译器。

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

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

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