我得到此代码打印所有带有最新时间戳的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文件,其中包含最新的时间戳和所有其他属性。
答案 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);
}