Cela peut être une solution simple (eh bien, c'est probablement le cas), mais pour une raison quelconque, je ne peux pas le comprendre.LINQ to XML: gestion des noeuds qui n'existent pas?
Alors, j'ai quelques xml qui ressemble à ceci:
XElement xml = XElement.Parse (
@"<Alphabet>
<a name="A" />
<b name="B" />
<d name="D" />
<e name="E" />
</Alphabet>");
donc plus tard dans mon code, je référence un noeud qui peut ou peut ne pas exister là-dedans comme ceci:
var name = (from b in xml.Descendants("c")
select b.Attribute("name")).FirstOrDefault().Value;
Mais quand il n'existe pas, au lieu de retourner null ou "", il lance une référence NullReferenceException: Object non définie sur une instance d'un objet.
Quelle est la meilleure façon de vérifier et de voir si un nœud existe réellement dans ma requête linq? Ou dois-je vérifier s'il existe d'une autre manière?
On dirait qu'il était mon utilisation de FirstOrDefault() qui a été déconner cela. Merci pour les réponses si - Tout est très utile! – onekidney
pouvez-vous s'il vous plaît la solution pour cela je suis dans la même situation et en utilisant FirstOrDefault() quelle est l'alternative – trx
@trx - Le problème que j'avais lors de la publication de ce problème appelait Value sur ma requête 'FirstOrDefault()'. Étant donné que la requête retournait null, l'appel de Value sur elle a provoqué l'erreur. Donc, pour tester si le noeud est là, j'aurais dû écrire: 'var nom = (à partir de b dans xml.Descendants (" c ") sélectionnez b.Attribute (" nom ")). FirstOrDefault();' et vérifié 'name' pour voir si elle était nulle ou non. – onekidney