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

时间:2015-03-06 12:07:29

标签: c# duplicates xml

我得到此代码打印所有带有最新时间戳的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();
}

}

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

1 个答案:

答案 0 :(得分:1)

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);
}