x.Attribute("id").Value); 数据包含-6ren">
gpt4 book ai didi

c# - 如何按属性值对 linq 中的 XML 文档进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:36 29 4
gpt4 key购买 nike

我曾尝试按属性值对我的 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对我不起作用。

我正在为 Windows Phone 7 使用 MVS 2010。

如有任何帮助,我将不胜感激。

--

更新

感谢您的快速回复!

juharr 问了一个很好的问题...我期待 OrderBy会修改 data .现在我知道我错了。

我要修改data我做了如下(感谢 Matt Lacey):

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

最佳答案

根据您链接到的问题,这有效:

var people = from p in data.Elements("person")
orderby (string)p.Attribute("id")
select p;

var people = data.Elements("person").OrderBy(p => (string)p.Attribute("id"));

(也在手机上测试以确认。)

关于c# - 如何按属性值对 linq 中的 XML 文档进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4604100/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com