2016-05-17 14 views
1

属性が存在する場合、xml属性をシーケンスでソートしようとしています。 もしそうでなければ、それはちょうど通常通り続行します。.NETラムダXML attribubuteが存在する場合のOrderBy属性

現在、私は持っている:

Dim children As IEnumerable(Of XmlNode) = dbElements.ChildNodes.Cast(Of XmlNode)().OrderBy(Function(r) r.Attributes("sequence").Value) 

、すべてのXmlNodeが属性を持っている場合、これは正常に動作します。それがない場合は、インスタンスエラーに設定されていないオブジェクトを期待どおりに取得します。この式を修正して、シーケンスが最初に存在するかどうかを確認するにはどうすればよいですか?

おかげで、Attributes("sequence") IsNot Nothing最初の場合

答えて

1

あなたは、チェックすることができる条件が満たされた場合、属性のValueを取得し、またはそれ以外の場合は、デフォルト値を返します。

Dim children As IEnumerable(Of XmlNode) = _ 
     dbElements.ChildNodes _ 
       .Cast(Of XmlNode)() _ 
       .OrderBy(
        Function(x) If(x.Attributes("sequence") IsNot Nothing, x.Attributes("sequence").Value, "") 
       ) 
+0

ありがとう、完璧に働いた。 – Cyassin

1

ないあなたは属性がない場合は注文したいかどうかはわかりない存在が、あなたはこの

.OrderByような何かを試すことができた(r => r.Attributes [ "シーケンス"] == nullの "?。":r.Attributes [ "シーケンス"]値)

+0

ありがとうございます。答えはC#ですが、正しい答えが反映されています。 – Cyassin

関連する問題