我尝试按属性值对 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 https://stackoverflow.com/questions/2208844/how-to-sort-xml-in-linq-c-by-an-attribute-value-also-mvc对我不起作用。
我正在使用适用于 Windows Phone 7 的 MVS 2010。
我将不胜感激任何帮助。
--
Update
感谢您的快速回复!
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
using OrderBy
而不是创造datatemp
?