我的代码有效,但我想看看是否有比我更好的更好的解决方案(我确定有!)。我有一个webservice,需要返回所有具有名为“updatedDate”的子节点的节点,其日期比传入日期更新。我要返回的xml对于每个查询可以是不同的,它们唯一的共同点是updatedDate节点。我目前正在使用带有xpath的linq到xml,这是代码:
XDocument allNodes = XDocument.Parse(result);
IEnumerable<XElement> nodesWithDates = allNodes.XPathSelectElements("//updatedDate");
XElement updatedNodes = new XElement("UpdatedNodes");
foreach (XElement node in nodesWithDates)
{
DateTime date;
if (DateTime.TryParse(node.Value, out date))
{
if (date > dateToCompare)
{
updatedNodes.Add(node.Parent);
}
}
}
return updatedNodes;
关于如何改进它的任何想法?
谢谢,
Annelie
答案 0 :(得分:1)
一种稍微不同且更紧凑的方法:
DateTime date;
var nodes = allNodes.Descendants("updatedDate")
.Where(x => DateTime.TryParse(x.Value, out date)
&& date > dateToCompare)
.Select(x => x.Parent);
XElement updatedNodes = new XElement("UpdatedNodes", nodes);