행운을 빌어 속성 값으로 XML 파일을 정렬하려고했습니다.속성 값으로 linq에서 XML 문서를 정렬하는 방법은 무엇입니까?
data.Descendants("person").OrderBy(x => x.Attribute("id").Value);
데이터가 포함
이<persons>
<person id="1">
<name>Abra</name>
<age>25</age>
</person>
<person id="2">
<name>Cadabra</name>
<age>29</age>
</person>
<person id="4">
<name>Hokus</name>
<age>40</age>
</person>
<person id="3">
<name>Pokus</name>
<age>30</age>
</person>
</persons>
대답 here 주어진 나를 위해 작동하지 않습니다.
나는 윈도우 폰 7
에 대한 MVS 2010을 사용하고 난 어떤 도움을 감사하게 될 것입니다.
-
업데이트
는 빠른 응답 해 주셔서 감사합니다!
juharr이 좋은 질문을했습니다 ... 나는 그 OrderBy
이 data
을 수정할 것이라고 기대하고있었습니다. 이제 나는 내가 틀렸다는 것을 압니다.
나는 data
을 수정하려면 다음과 같이 내가 (감사 매트 레이)를 수행했습니다
var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id"));
data.Descendants("person").Remove();
data.Element("persons").Add(people);
을하지만 난 아직 아무것도 없어. Data
은 비어 있습니다. 단지 <persons />
나는 지금 무엇이 잘못된 것인지 궁금합니다.
이 코드를 사용하여 내 문제를 해결하기 위해 관리 :
XDocument datatemp = new XDocument(data);
var people = datatemp.Descendants("person").OrderBy(x => (int)int.Parse(x.Attribute("id").Value));
data.Descendants("person").Remove();
data.Element("persons").Add(people);
수정 (더 우아) 다른 방법이 있나요 data
OrderBy
를 사용하는 대신 datatemp
을 만들어? 당신이에 링크 된 질문을 바탕으로
"운이 없다"에 대해 더 구체적으로 설명 할 수 있습니까? – fejesjoco
'OrderBy'의 결과를 포착하거나'data'를 수정하려고합니까? – juharr
나는 이것이 고대의 질문이라는 것을 알고있다. 그러나 Dima가 말한 것처럼 .ToList() 또는 .ToArray()를 추가하여 datatemp 변수를 피할 수 있습니다. 'stuff.OrderBy (...) .ToList()'는 사람을 추가 할 때 IEnumerable이 비어있는 것을 방지합니다. – Mixxiphoid