나는 전에에서 내 foreach 루프를 리팩토링 나는 어떻게하는지 모른다. 제발 저를 계몽하십시오.LINQ 리팩토링
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
나는 전에에서 내 foreach 루프를 리팩토링 나는 어떻게하는지 모른다. 제발 저를 계몽하십시오.LINQ 리팩토링
selected.ForEach(x => (mainNode.SetAttribute("name", x.Key)));
selected.ForEach(x => (mainNode.SetAttribute("value", x.Value)));
같은 :
: 이 paramsList.ToList().ForEach(e => {
XmlElement mainNode = xmlDoc.CreateElement("parameter");
mainNode.SetAttribute("name", e.Key);
mainNode.SetAttribute("value", e.Value);
rootNode.AppendChild(mainNode);
});
하지만,이 경우에, 나는 foreach
간단한을 선택할 것을
foreach (var e in paramsList)
{
XmlElement mainNode = xmlDoc.CreateElement("parameter");
mainNode.SetAttribute("name", e.Key);
mainNode.SetAttribute("value", e.Value);
rootNode.AppendChild(mainNode);
}
나는 .. 이미 그렇게 할 수 있었다. 코드를 보면 간단한 foreach 루프를 선택할 수 있습니다. 그것은 단순한 foreach 루프와 비교할 때 Generic을 만들기 위해 코드를 더 이상 사용하지 않기 때문입니다.
어쩌면 내가 당신과 같은 결과를 얻을 수 있다고 생각이
selected.ForEach(x =>
{
mainNode.SetAttribute("name", x.Key);
mainNode.SetAttribute("value", x.Value);
});
XmlDocument에서 XDocument로 전환 할 수 있습니까? LINQ to XML은 LINQ와 훨씬 잘 통합됩니다.
var nodes = from pair in paramsList
select new XElement("parameter",
new XAttribute("name", pair.Key),
new XAttribute("value", pair.Value));
그리고 그 문서에 노드를 추가하거나하여 XDocument 생성자 또는 무언가로 전달을 제외하고, 그것 뿐이다.
편집 : 질문에 "linqtoxml"태그가 지정되어 있지만 LINQ to XML은 XDocument, XElement 및 XAttribute와 같은 System.Xml.Linq 네임 스페이스의 특정 클래스 집합을 의미합니다. 샘플 코드는 실제 LINQ to XML 클래스를 사용하지 않으며, LINQ를 사용하여 XML을 빌드하려는 경우 실제 LINQ to XML 클래스가 XmlDocument 및 친구들보다 나은 서비스를 제공 할 것을 제안합니다.
아니요 : (param => param) 을 (를) 선택 하시겠습니까? –
또한 원본 코드는 paramsList에 요소가있는만큼 많은 "매개 변수"요소를 생성하지만 리팩토링 된 코드는 항상 "name"및 "value"특성이 설정된 길이 (paramsList) 인 정확히 하나의 "매개 변수"요소를 생성합니다. 그것에 시간. 나는 그것이 당신이 정확하게 리팩터링했다고 생각하지 않는다. –
예, 당신은 절대적으로 옳습니다. 어쨌든, 난 그냥 브루노 콘데의 코드에 댓글을 달았고 이제는 기존의 foreach 루프를 대체하지 않습니다. – grayman