2009-09-01 8 views
1

私は(多くの理由で)変更できないDLLを持っています。このアセンブリを使用してXPathNodeIteratorを取得します。私はXPathNodeIteratorを取得するためにXPathNavigatorXPathExpressionでXMLを並べ替えることができます知っているC#でXPathNodeIteratorの内容をソートする

、問題は、私はXPathNodeIteratorから始めることであるその後の並べ替えを適用する方法はありますか?

答えて

5

XPathNodeIteratorは、IEnumerableXPathNavigatorである。私は避けるように期待していたたもの

IEnumerable<XPathNavigator> sorted = 
    from XPathNavigator nav in nodeIterator 
    orderby nav.GetAttribute("@id") 
    select nav; 
+0

+1解決策を提供するには: –

+0

私はこれをローカルでテストしましたが、確かに動作しているようです。 今私はこのソリューションをプロジェクトで使用できますか?サーバーをテストサーバーにインストールし、顧客がそのサーバーにインストールしようとしている場合) – Sander

1

このタイプはイテレータなので、イテレータ全体を列挙して別のソート可能な構造体にロードすることなく、コンテンツをソートする方法はありません。

このタイプで利用できるメンバーのリストについては、XPathNodeIterator Membersを参照してください(残念ながら、いずれもソートをサポートしていません)。

+0

はい:) – Sander

+0

パフォーマンス上の違いはありません:あなたは、.NET 3.5とLINQを使用している場合このように、あなたはこのような何かを行うことができます。 'XmlDocument'、' XPathDocument'、または 'XDocument'から得られた' XPathNavigator'を使ったXPathクエリはすべて最適化されず、リニアスキャンを使用します。だからあなたが同じことをすれば、あなたは何も失うことはありません。 –

関連する問題