【问题标题】:Sort XmlNodeList with a specific Node value使用特定节点值对 XmlNodeList 进行排序
【发布时间】:2014-05-01 10:53:00
【问题描述】:

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

我有以下 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 相关的所有员工目标进行排序。

注意:我通过像这样的拆分节点值获取 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

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

【问题讨论】:

    标签: c# xml sorting xmldocument xmlnodelist


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2022-08-17
      • 2013-08-30
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多