2010-12-01 8 views
0

Die folgende Link-Anweisung funktioniert einwandfrei, wenn das Quell-XML eine Zahl enthält oder wenn die Tags fehlen. Das Problem, das ich habe, ist, wenn die Tags leer sind oder wenn ein nicht-numerischer Wert verwendet wird. Kann diese Aussage modifiziert werden, um mit diesen Situationen umzugehen?linq to xml, Handhabung leerer Tags

Convert.ToInt32((string)Data.Elements("groupBy").Elements("depth").FirstOrDefault() ?? "0") 

Antwort

1

Sie wissen nicht, eine Möglichkeit, dies mit LINQ zu lösen, aber wenn Sie nicht den Inhalt des XML-Dokuments garantieren können, dann wäre es einfacher, nur int.TryParse() verwenden ?, z.B.

int result = 0; 
int.TryParse((string)Data.Elements("groupBy").Elements("depth").FirstOrDefault(), out result); 
0

Ich würde einfach tun:

try 
    int result = (int)Data.Elements("groupBy").Elements("depth").FirstOrDefault(); 
catch 
{ 
    // handle 
} 
+0

Das Problem ist, dass dies eine von mehreren Befehlen ein Objekts (Teil einer „wählt neuen myClass“ Anweisung) die Schaffung so einen Versuch fängt Zugabe wird nicht Arbeit. Ich weiß, dass ich in meiner Frage nicht alle Details angegeben habe, da ich die einzelne Codezeile ändern wollte. – Retrocoder