使用 lambda 表达式控制操作

Control manipulation with lambda expression

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

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

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

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

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

构建查询以获取要更新的控件列表可以转换为 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";
}