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