从 XML 中删除重复项,然后另存为 XML 文件

Remove duplicates from XML and then save as XML file

我得到这段代码打印所有带有最新时间戳的 ID。但我想删除不是最新时间戳的元素,然后另存为 XML 文件。除了 ID 和时间戳还有更多属性,所以我想删除那些不是最新时间戳的属性。

static void Main(string[] args)
{
    XElement xelement = XElement.Load("data.xml");
    var employees = xelement.Elements()
                .Select(e => new
                {
                    Name = e.Element("Employee").Value,
                    ChangeTimeStamp = DateTime.Parse(e.Element("ChangeTimeStamp").Value)
                })
                .GroupBy(e => e.Name)
                .Select(g => new
                {
                    Name = g.Key,
                    ChangeTimeStamp = g.Max(e => e.ChangeTimeStamp)
                });
    foreach (var employee in employees)
    {

        Console.WriteLine("{0} {1}", employee.Name, employee.ChangeTimeStamp);
    }
    Console.ReadKey();
}

}

我想创建 xml 文件,其中包含所有具有最新时间戳和所有其他属性的唯一 ID。

public static void Main(string[] args)
{
    var xelement = XElement.Load("data.xml");
    var employees = xelement.Elements()
        .Select(e => new
        {
            Element = e,
            Name = e.Element("Employee").Value,
            ChangeTimeStamp = DateTime.Parse(e.Element("ChangeTimeStamp").Value)
        })
        .GroupBy(e => e.Name)
        .Select(g => 
        {
            var maxTimestamp = g.Max(e => e.ChangeTimeStamp);
            foreach (var e in g)
            {
                if (e.ChangeTimeStamp < maxTimestamp)
                {
                    e.Element.Remove();
                }
            }

            return new
            {
                Name = g.Key,
                ChangeTimeStamp = maxTimestamp
            };
        });     

    xelement.Save(yourPathToSave);
}