Je refactorisé ma boucle foreach de cette avant:LINQ refactorisation
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);
}
à cela, en utilisant 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);
Cependant, je sais que la section ci-dessous peut encore être refactorisé en une seule boucle, mais Je ne sais pas comment. S'il te plaît, éclaire-moi.
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
N'est pas: Sélectionner (param => param) redondant? –
De plus, votre code original produirait autant d'éléments "paramètres" que d'éléments dans paramsList, tandis que le code refacturé produirait toujours exactement un élément "parameter", avec les attributs "name" et "value" étant définis length (paramsList) fois dessus. Je ne pense pas que vous l'ayez refactorisé correctement. –
ouais vous avez absolument raison. de toute façon, je viens de commenter le code de bruno conde et maintenant je ne remplace pas plutôt ma boucle foreach existante. – grayman