lambda表达式含义

本文关键字:表达式 lambda | 更新日期: 2023-09-27 18:11:29

我创建了一个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表达式的含义

lambda表达式含义

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

Url.Action返回的值用作lambda表达式的返回值。

这就是lambda表达式本身在语言构造方面的分解方式。如果你问它在行为方面意味着什么,那就另当别论了——你需要看看你自己的PageLinks方法,以及Url.Action的文档。

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

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

你这样使用它:string url = pageUrl(pageNumber);

Url.Action给出动作List的url,该动作具有将用x的值填充的单个参数(可能是类型int和名称page(。此参数可能是必须返回的列表的页面。

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

这将"返回"一个html字符串,其中包含我们之前计算的url的链接。(可能是<a href='url'></a>之类的(啊。。。这是你的功能:-(

(我认为您正在做这样的事情:ASP.NET MVC分页,用包含当前页面和总页面的PagingInfo类保留当前查询参数,对吧?(