按值排序日期在Xml c#中

时间:2015-09-14 10:01:11

标签: c# xml

我尝试按值对XML格式的日期标记进行排序:

var noteElements = xDoc.Root.Descendants("Note").OrderBy(o => (DateTime)o.Element("date")).ToList();

foreach (XElement noteEl in noteElements)
{
    string noteDateValue = noteEl.Element("date").Value;
    noteEl.ReplaceWith(new XElement("notedate", noteEl, new XAttribute("date", noteDateValue)));
}

这不起作用。日期未按预期排序。

XML:

<Root>
 <Notes>
    <notedate date="date here"><Note>
    <date>1997-07-04T00:00:00</date>
    </Note></notedate>
    <notedate date="date here"><Note>
      <date>1997-06-04T00:00:00</date>
    </Note></notedate>
</Notes>
</Root>

任何可以解释我做错的人都会?

1 个答案:

答案 0 :(得分:3)

您要使用Note元素替换每个notedate元素。您执行替换的顺序无关紧要。

听起来你实际上想要这样的东西:

var notes = doc.Root.Element("Notes");
notes.ReplaceNodes(notes.Elements()
                        .OrderBy(x => (DateTime) x.Element("date"))
                        .Select(x => new XElement("notedate",
                            new XAttribute("date", "date here"),
                            x));