0

我有可以工作的代码,但我想看看是否有比我现有的更好更好的解决方案(我确定有!)。我有一个 web 服务,它需要返回所有具有一个名为“updatedDate”的子节点的节点,其日期比传入的日期更新。对于每个查询,我返回的 xml 可能不同,它们唯一的共同点是 updatedDate 节点。我目前正在使用带有 xpath 的 linq to 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;

关于如何改进它的任何想法?

谢谢,

安妮莉

4

1 回答 1

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);
于 2012-04-23T03:10:29.317 回答