0

私は機能しているコードを持っていますが、私が持っているものよりも優れた、より良い解決策があるかどうかを確認したいと思います(確かにあります!)。渡された日付よりも新しい日付の「updatedDate」という子ノードを持つすべてのノードを返す必要があるWebサービスがあります。返されるxmlはクエリごとに異なる可能性があり、共通しているのはupdatedDateノードだけです。私は現在、xpathでlinqtoxmlを使用しています。コードは次のとおりです。

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 に答える