Я безуспешно пытался отсортировать мой 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>
Ответ дан здесь делаетне работает для меня.
Я использую MVS 2010 для Windows Phone 7.
Буду признателен за любую помощь.
-
Обновление
Спасибо за быстрые ответы!
Юхарр задал хороший вопрос ... я ожидал, что 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
?