2016-05-26 42 views
0

我想更好地理解lambda表达式并使用它来重构一些代码。我有一些运行在后端页面加载的代码,用于查找设置了IE模式的元标记,并将其更改为边缘模式,仅覆盖一个特定页面的SharePoint主页。这是我现在已经完成此代码:用lambda表达式控制操作

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

构建查询来获取控件进行更新可以翻译成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"; 
}