如何在 linq 中按属性值对 XML 文档进行排序?

2024-01-21

我尝试按属性值对 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?


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

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

or

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

(也用手机测试来确认。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 linq 中按属性值对 XML 文档进行排序? 的相关文章

随机推荐

  • 是否有任何架构使用相同的寄存器空间来进行标量整数和浮点运算?

    我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 X86 的传统 x87 FPU 使用带有
  • 应该是 DDD 中域的本地化部分

    在遵循 DDD 概念的同时 我正在努力决定是否应该让我的域本地化意识 我提出了两个解决方案来解决这个问题 两者都使域本地化能够在不同的地方实现 我是否应该将本地化文本放入域中 分享您对此问题的解决方案或我的两个示例的优缺点 谢谢 实施例1
  • 内存管理、堆损坏和 C++

    所以 我需要一些帮助 我正在开发一个 C 项目 然而 我认为我已经设法破坏了我的堆 这是基于我添加了一个事实std string给一个类并为其分配另一个类的值std string std string hello Hello world n
  • 在SceneKit中使用Vuforia提供的投影矩阵和标记姿势

    目前 我正在尝试解决在 SceneKit 中渲染时投影矩阵和帧标记姿势的使用问题 场景中的模型和相机图像背景显示没有问题 然而 一旦我更改投影矩阵和帧标记姿势矩阵以匹配 Vuforia 所有内容都会被推到屏幕外 func didUpdate
  • Talend 中的行到列转换

    我正在学习 Talend Open studio 我想实现一行转换为3行的场景 我的来源就像 Col1 Col2 Col3 a b c 我想得到如下所示的输出 Col a b c 我使用了 tcolumntopivotdelimited 但
  • React-native 本机模块可用于 IOS 上的后台任务

    我的问题 我有一个与医疗 BLE 设备通信的应用程序 我已经一切正常 但我的问题是 当 ios 用户将应用程序放在后台时 我停止获取 处理通过蓝牙发送的消息 Android 似乎不断收到这些消息 但据我发现 在 iOS 上 JS 桥已被拆除
  • PHP 获取不带扩展名的当前页面名称?

    我想将当前页面文件名显示为页面标题 但不带扩展名 如果可能的话 第一个字符应该大写 这可能吗 每个人都喜欢俏皮话 ucfirst pathinfo SERVER PHP SELF PATHINFO FILENAME 第二个参数pathinf
  • 将变更集转换为搁置集

    是否可以仅通过 tfs tfpt 中的某些操作从一个分支的两个版本的差异创建一个搁置集 例如从 变更集 2013 gt 变更集 2034 创建搁置集 可以从具有一些限制的变更集创建搁置集 我需要从分支回滚更改以将其从版本中删除 但它也不在任
  • 如何使用php在FTP服务器上上传大文件?

    ftp server ftp abc com remote file myvideo avi file size 210MB file myvideo avi file size 210MB conn id ftp connect ftp
  • Spring数据MongoDb:MappingMongoConverter删除_class

    默认映射MongoConverter向数据库中的每个对象添加自定义类型键 class 所以 如果我创建一个人 package my dto public class Person String name public Person Stri
  • Python 中如何处理 POST 和 GET 变量?

    在 PHP 中你可以只使用 POST对于 POST 和 GET用于 GET 查询字符串 变量 Python 中的等价物是什么 假设您要发布一个 html 表单
  • 单击选项时使用 selenium 抓取 HTML [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个脚本 我用它来使用硒从网站上抓取数据 Sub Body Building Dim driver As New W
  • 使用 ifelse 函数返回 null

    我试图在 R 中使用 ifelse 返回 null 但它会抛出错误消息 任何建议请 这是我的代码 cntr1 lt ifelse unlist gregexpr path info j fixed TRUE useBytes TRUE gt
  • 找不到用于注册我的设备的 Chromecast 序列号

    我正在尝试注册我的 chromecast 设备以进行开发在控制台上 https cast google com publish overview遵循本指南 https developers google com cast docs regi
  • 如何减少大型模板的编译时内存占用?

    假设我有一个类 其中包含large其他类声明的数量 是否有可能以某种方式分散这些成本 以便嵌套类型的编译时内存消耗不会呈二次方增长 如果需要的话 我愿意减少编译时间 并且如果可以选择的话 我很乐意将其划分为不同的翻译单元 为了尝试找到解决方
  • 如何自动滚动到 RichEdit 的末尾?

    我以前从来不需要使用TRichEdit 总是使用TMemo 当我添加像 TMemo 这样的文本时 我希望 RichEdit 自动滚动到最后 看看添加一些数据后的样子 如您所见 滚动条保留在顶部 但我希望在添加文本时它保留在底部 我已经 搜索
  • 如何在Android上实现嵌套的主细节流程?

    我有一个列表 列表中 列表中等等 大概有5层吧 在手机上为每个列表创建 5 个活动很容易 但如果我也想支持平板电脑怎么办 所以我需要使用主细节流程 但是 我似乎找不到与嵌套主详细信息流程相关的任何教程或信息 不管怎样 这是我所描述内容的一个
  • HTTPClient 无法在 https 和 http 之间建立路由

    我正在通过混合使用 http 和 https 链接来测试 HttpClient 4 2 HttpClient 似乎从第一次调用开始就坚持使用协议 如果第一个调用是 http 则所有后续 https 调用都会失败 但 http 调用正常 反之
  • 为什么测试中的辅助文件来源两次

    在测试中使用 uuid 时我遇到了麻烦 因为辅助文件的来源两次 为什么会发生这种情况 有没有办法避免二次采购 对于可重现的示例 只需创建一个新包 将一个名为 helper data R 的文件放入 tests testhat 中 并包含以下
  • 如何在 linq 中按属性值对 XML 文档进行排序?

    我尝试按属性值对 xml 文件进行排序 但没有成功 data Descendants person OrderBy x gt x Attribute id Value 数据包含