lambda表达意义

时间:2011-10-14 16:24:44

标签: c# asp.net-mvc-3 c#-4.0

我创建了一个htmlhelper,其签名如下:

 public static MvcHtmlString PageLinks(this HtmlHelper html,
     PagingInfo pagingInfo,Func<int, string> pageUrl)

我看到它像这样传递:

@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))

但我不知道这是什么意思?

x => Url.Action("List", new {page = x})

请建议这个lambda表达的含义

2 个答案:

答案 0 :(得分:1)

嗯,这是一个lambda表达式,它接受一个名为x的参数,并隐式输入为int,并使用字符串{{1}的一个参数调用Url.Action匿名类型的另一个参数,它具有单个属性"List",其值为page

x返回的值用作lambda表达式的返回值。

就语言结构而言,这就是lambda表达式本身的分解方式。如果您在询问行为方面的含义,那就是另一回事 - 您需要查看自己的Url.Action方法,以及{{1}的文档}}

答案 1 :(得分:1)

x => Url.Action("List", new {page = x})

这是一个给出x的(lambda)函数(我们知道x必须是整数,因为签名是Func<int, string>)返回一个url(字符串)。 (从技术上讲,这是一个lambda表达式,但在这种特殊情况下会失去差异)

您可以像这样使用它:string url = pageUrl(pageNumber);

Url.Action提供了具有单个参数(类型为List且名称为int)的操作page的网址,其中将填充{的值{1}}。此参数可能是必须返回的列表页面。

x

这将“返回”一个html字符串,其中包含我们之前计算过的url的链接。 (可能是@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x})) 或类似的东西)啊......这是你的功能: - )

(我认为你这样做:ASP.NET MVC Paging, Preserving Current Query Parameters<a href='url'></a>类包含当前页面和总页面,对吧?“