2012-04-23 9 views
0

コードは動作していますが、私が持っているものよりも優れたソリューションがあるかどうかを確認したいと思います。私は、渡された日付よりも新しい日付を持つupdatedDateという子ノードを持つすべてのノードを返す必要があるwebserviceを持っています。返されるXMLは、クエリごとに異なる場合があります。共通するのはupdatedDateノードだけです。私は現在xpathの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

答えて

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); 
+0

は兆倍ましだ - ありがとうございました! – annelie

関連する問題