使用特定的Node值对XmlNodeList进行排序

时间:2014-03-24 07:29:34

标签: c# xml sorting xmldocument xmlnodelist

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

我有以下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为员工,另一个为相关目标。

我需要的是我想要从LastModifiedOn节点对与FilterData {}相关的所有目标进行排序。

注意:我通过拆分节点值获取LastModifiedOn值,如此

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

现在我正在使用System.XML命名空间来执行操作。我还查看了LINQ TO XML,但我无法使其工作。

我按照代码

获取XMLNodelist

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

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

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

  1. Sorting XML nodes based on DateTime attribute C#, XPath
  2. XMLdocument Sort
  3. 我已准备好将代码转换为LINQ TO XML,但需要一个简短的示例。

1 个答案:

答案 0 :(得分:0)

您可以尝试的一件事是创建一组键值对,其中键是目标,值是日期。然后,您可以通过比较日期来覆盖CompareTo方法,然后您可以使用[集合名称] .Sort()。希望这有帮助