【问题标题】:VS 2013 telling me Use lamba expressionVS 2013 告诉我使用 lambda 表达式
【发布时间】:2014-06-03 20:15:38
【问题描述】:

我的问题与图层有关。添加部分。我是使用 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")
        )
)

【问题讨论】:

  • VS2013 会为你重写它为 lambda 吗? (R# 会,所以当我有疑问时,我让它重写,然后看看我更喜欢哪个 :)
  • 问题出在哪里?
  • 编辑了问题。但为什么我会得到这个? link
  • 实际运行页面时是否出现错误? VisualStudio 有时在使用 Razor 时会遇到一些问题,并在并非真正问题的地方显示错误/曲线。 Razor 很难解析(微软承认),所以像这样的事情和格式有时会被命中或错过。
  • 也许就是这样。页面运行(不是我想要的方式)所以我自然会从编译器类型错误开始。

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


【解决方案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")))
     )

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

【讨论】:

  • 我试过这个,但因为没有包含它而出现 6 个错误
  • @tshoemake 确保您完全删除:(1) { 在 lambda 主体之前,(2) ; 在 lambda 主体声明之后,(3) @ 987654327@ 在 lambda 主体之后。如果你这样做,你不应该得到任何语法错误。
  • 做到了。谢谢先生。
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多