我重構從此我的foreach循環之前:LINQ重構
foreach (KeyValuePair[string, string] param in paramsList)
{
XmlElement mainNode = xmlDoc.CreateElement("parameter");
mainNode.SetAttribute("name", param.Key);
mainNode.SetAttribute("value", param.Value);
rootNode.AppendChild(mainNode);
}
於此,在使用LINQ:
XmlElement mainNode = xmlDoc.CreateElement("parameter");
var selected = paramsList.AsEnumerable().Select(param => param).ToList();
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
rootNode.AppendChild(mainNode);
但是,我知道下面的部分仍然可以重構爲一個循環,但我不知道如何。請賜教。
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
是不是: 選擇(param => param) 冗餘? – 2009-05-04 12:33:49
此外,您的原始代碼會產生與paramsList中的元素一樣多的「參數」元素,而重構後的代碼將始終生成一個「參數」元素,其中「name」和「value」屬性被設置爲length(paramsList)時間就可以了。我不認爲你有正確的重構。 – 2009-05-04 12:39:14