2016-05-26 43 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"; 
}