VS 2013告诉我使用lambda表达式

时间:2014-06-03 20:15:39

标签: asp.net-mvc linq dictionary kendo-ui telerik-mvc

我的问题是layers.Add部分。我使用Map小部件对MVC,Razor,Linq和Telerik的KendoUI都是全新的。 layers.Add()函数获得一条带有“使用lambda表达式”消息的绿色波浪线。我为什么要这个?谢谢你的帮助。 link here

@(Html.Kendo().Map()
      .Name("map")
      .Center(39.6924, -97.3370)
      .Zoom(4)
      .Layers(layers =>
      {
          layers.Add()
              .Style(style => style.Fill(fill => fill.Opacity(0.7)))
              .Type(MapLayerType.Shape)
              .DataSource(dataSource => dataSource
                  .GeoJson()
                  .Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
              );
      })
      .Events(events => events
           .ShapeCreated("onShapeCreated")
           .ShapeMouseEnter("onShapeMouseEnter")
           .ShapeMouseLeave("onShapeMouseLeave")
        )
)

1 个答案:

答案 0 :(得分:1)

IDE只是建议您缩短lambda。假设F是一些返回void的函数。然后以下两个是相同的:

x => { F(x); }
x => F(x)

因此,您可以通过替换此代码来缩短代码:

layers =>
{
    layers.Add()
        .Style(style => style.Fill(fill => fill.Opacity(0.7)))
        .Type(MapLayerType.Shape)
        .DataSource(dataSource => dataSource
            .GeoJson()
            .Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
        );
}

有了这个:

layers => layers.Add()
    .Style(style => style.Fill(fill => fill.Opacity(0.7)))
    .Type(MapLayerType.Shape)
    .DataSource(dataSource => dataSource
        .GeoJson()
        .Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
     )

出于易读性原因,您可能希望或可能不想实际进行此更改。