【问题标题】:Linq Lamba support in WebForms ASCXWebForms ASCX 中的 Linq Lamba 支持
【发布时间】:2009-07-02 12:05:35
【问题描述】:

在 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 文件中工作?

【问题讨论】:

    标签: c# linq webforms lambda ascx


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 啊,它确实说:版本信息:Microsoft .NET Framework 版本:2.0.50727.3053; ASP.NET 版本:2.0.50727.3053。如何指定 v3.5,为什么 ASCX 文件的处理方式与我网站的其他部分不同(这绝对是 v3.5,因为它在 Web 项目属性窗格中设置为目标框架)?
    • 顺便说一句,GetModel的返回类型是List
    • 现在排序 - 这很奇怪。设置一个新的 3.5 项目来比较 web.config 文件,由于某种原因 system.codedom > compilers 部分在我的另一个项目中是空的!我想知道这样多久了!
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2013-10-29
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多