난 그냥 LINQ, 특히 LINQ to XML을 배우고 있는데, 작동하는 쿼리를 작성했지만, 만약 내가 그것을 조금만하고 있다면 궁금해하고있다. 코드를 개선 할 수 있습니까?이 LINQ to XML을 더 잘 작성할 수 있습니까?
<SomeDocument>
<Prop1> val1 </Prop1>
<Prop2> val2 </Prop2>
<Prop3> val3 </Prop3>
</SomeDocument>
그러나 Prop1은 Prop2 및 Prop3이되지 않을 수 있습니다 :
가 나는하여 XDocument 있습니다. 동일한 코드로 파싱 할 다른 XDocument가있을 수 있습니다. 서로 다른 속성을 가지고 있습니다. 하지만 Prop1 또는 Prop1과 Prop2가 모두있는 경우 XDocument에만 관심이 있습니다.
var query = from n in xml.Elements()
where n.Name == "Prop1" || n.Name == "Prop2"
select new {n.Name, n.Value};
string prop1 = null;
string prop2 = null;
foreach (var n in query)
{
if (n.Name == "Prop1") prop1 = n.Value;
if (n.Name == "Prop2") prop2 = n.Value;
}
if (string.IsNullOrEmpty(prop1)) { //error }
if (string.IsNullOrEmpty(prop2)) { DoMethod1(prop1); }
else { DoMethod2(prop1, prop2); }
내가 수행하려는 작업을 수행하는 더 좋은 방법이 있는지 확실하지 않지만 쿼리 후의 코드가 너무 길다. 1 또는 2 개의 명시 적 노드를 찾고 노드가 발견되는 경우 노드에 따라 관련 메소드를 호출하십시오.
귀하의 방법이 내 문제에 더 적절하다고 생각합니다. –