使用lambda表达式控制操作

时间:2016-05-26 14:04:57

标签: c# linq lambda sharepoint-2010

我试图更好地掌握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表达式更简洁地完成第一个代码块的功能?

1 个答案:

答案 0 :(得分: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";
}