【问题标题】:Control manipulation with lambda expression使用 lambda 表达式进行控制操作
【发布时间】:2016-09-24 14:17:16
【问题描述】:

我正在尝试更好地掌握 lambda 表达式并使用它来重构一些代码。我有一些在后端页面加载时运行的代码,以查找设置 IE 模式的元标记并将其更改为边缘模式,仅针对一个特定页面覆盖 SharePoint 母版页。这是我现在完成的代码:

foreach (HtmlMeta tag in Page.Header.Controls.OfType<HtmlMeta>())
    {
        if (tag.Content.Contains("IE=", StringComparison.OrdinalIgnoreCase))
        {
            tag.Content = "IE=Edge";
        }
    }

我想通过使用 lambda 表达式使其更简洁,但我无法弄清楚如何准确选择相关标记。这是我目前所拥有的:

var t = Page.Header.Controls.Cast<Control>().Where(n => n is HtmlMeta);

如何使用 lambda 表达式更简洁地完成第一段代码的功能?

【问题讨论】:

    标签: c# linq lambda sharepoint-2010


    【解决方案1】:

    构建查询以获取要更新的控件列表可以转换为 LINQ,如下所示:

    var t = Page.Header.Controls
                .OfType<HtmlMeta>()
                .Where(h => h.Content.Contains("IE=", StringComparison.OrdinalIgnoreCase));
    

    由于 LINQ 的目的是用于查询,因此仍然需要使用循环结构来完成数据修改:

    foreach (var tag in t)
    {
        tag.Content = "IE=Edge";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多