在c#中这是什么意思(m => m.Title)

时间:2012-12-26 08:49:04

标签: c# lambda

我是MVC(c#)的新手,并且不知道看起来像箭头或者什么的一些用法 比较运算符。我不知道这是什么意思。

我已经在MVC(c#)

的许多领域中看到过这种情况

=>代表什么?它是箭头还是比较运算符?

示例1:

return storeDB.Albums.Orderby(a => a.Price)

示例2:

.ForEach(a => context.Albums.Add(a));

示例3:

bool isValid = storeDB.Orders.Any(o => o.OrderId == id && o.Username == User.Identity.Name);

示例4:

var addedAlbum = storeDB.Albums.Single(album => album.AlbumId == id);

示例5:

@Html.HiddenFor(model => model.Id)

请用简单的术语来解释。感谢。

2 个答案:

答案 0 :(得分:3)

这是lambda expressions - 用于创建anonymous methods(即代表)的捷径。运营商=>goes to运营商。这将匿名方法参数与匿名方法体分开。


storeDB.Albums.Orderby(a => a.Price)

这里我们有匿名方法接受相册作为参数。此专辑进入正文,返回专辑Price属性的值。与委托语法相同:

delegate(Album a) { return a.Price; }

或使用命名方法:

private decimal GetAlbumPrice(Album a)
{
    return a.Price;
}

如您所见,lambda表达式语法是实现相同结果的最短形式。

答案 1 :(得分:0)

你应该阅读http://msdn.microsoft.com/en-us/library/bb397687.aspx

Lambda简单来说基本上是匿名函数,可用于创建委托或表达式类型。它基本上是编写代表的一种方便的简写(虽然这种方式过于简单了)