对具有特定Node值的XmlNodeList进行排序

本文关键字:XmlNodeList 排序 值的 Node | 更新日期: 2023-09-27 17:52:13

我在网上搜索了这个,但是我没能找到任何相关的解决方案。

我有以下XML

  <Table>
    <Entity>Employee</Entity>
    <EntityID>2786</EntityID>
    <Goal>
      <GoalId>31931</GoalId>
      <FilterData>LastModifiedOn¥2014-03-20T18:11:01.0000000+05:30ÆActiveTaskCount¥0</FilterData>
    </Goal>
    <Goal>
      <GoalId>31932</GoalId>
      <FilterData>LastModifiedOn¥2014-03-22T15:26:09.0000000+05:30ÆActiveTaskCount¥0</FilterData>
    </Goal>
    <Goal>
      <GoalId>31932</GoalId>
      <FilterData>LastModifiedOn¥2014-03-22T09:25:00.0000000+05:30ÆActiveTaskCount¥0</FilterData>
    </Goal>
  </Table> 

从上面的XML当我读取数据时,我得到了2个单独的DataTables;1个用于员工,另一个用于相关目标。

我需要的是,我想对FilterData节点中与LastModifiedOn相关的所有与员工相关的目标进行排序。

注意:我得到的lastmodifieldon值分割节点值像这样

nodevalue.Split('Æ')[0].Split('¥')[1]

现在我正在使用System.XML命名空间进行操作。我也看了LINQ TO XML,但我无法使它工作。

我通过以下代码获得xmlnodeist

XmlNodeList GoalNodesList = doc.DocumentElement.SelectNodes("/NewDataSet/Table[Entity='Employee' and EntityID='" + EntityId + "']/Goal");

这里我想要排序目标(相对于LastModifiedOn)。

我也看了一些有用的链接,但到目前为止还没有得到任何想法

  1. 基于DateTime属性的XML节点排序c#, XPath
  2. XMLdocument类

我准备将代码转换为LINQ TO XML,但需要一个简短的例子。

对具有特定Node值的XmlNodeList进行排序

您可以尝试创建一个键值对集合,其中键是目标,值是日期。然后你可以通过比较日期来覆盖CompareTo方法,然后你可以使用[collection name]. sort()。希望对大家有所帮助