2010-12-01 5 views
0

L'instruction de liaison suivante fonctionne correctement si le code source XML contient un nombre ou si les balises sont manquantes. Le problème que j'ai est quand les étiquettes sont vides ou si une valeur non-numérique est utilisée. Cette déclaration peut-elle être modifiée pour gérer ces situations?linq to xml, gestion des balises vides

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

Répondre

1

Je ne sais pas d'un moyen de résoudre cela avec LINQ, mais si vous ne pouvez pas garantir le contenu du document XML alors serait-il plus facile à utiliser juste int.TryParse() ?, par exemple

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

Je voudrais simplement faire:

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

Le problème est que c'est l'une de plusieurs commandes créant un objet (une partie d'un « select new MyClass » déclaration) afin d'ajouter une prise d'essai ne sera pas travail. Je sais que je n'ai pas donné tous les détails dans ma question car je voulais modifier la ligne de code individuelle. – Retrocoder