使用 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";
}
我正在尝试更好地掌握 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";
}