Kirk's answer est juste sur l'argent. Je voulais signaler quelques problèmes avec votre code.
Cette ligne dénombre inutilement tous les éléments:
var hasMatch = matchingElements.Count() > 0;
Vous pouvez le remplacer par Any()
qui prendra fin au début une fois un élément se trouve:
var hasMatch = matchingElements.Any();
Ensuite, après avoir vérifié que hasMatch
est true
vous devriez appeler First()
au lieu de FirstOrDefault()
puisque vous savez qu'il doit avoir une valeur à ce moment-là.
Cela dit, vous pouvez réellement réécrire votre code comme suit:
var matchingElement = elements.FirstOrDefault(e => e.Name.LocalName == name);
return (string)matchingElement;
ici à un casting string
renverra la valeur de l'élément si elle a été trouvé, il serait par ailleurs revenir null
. La distribution est utilisée juste au cas où il était null
puisque vous ne seriez pas en mesure d'utiliser matchingElement.Value
qui lancerait un NullReferenceException
si aucun élément n'a été trouvé. Vous devriez également envisager d'utiliser SingleOrDefault
si vous pensez qu'un seul élément existe.
Intéressant - J'ai eu le sentiment que cela pourrait avoir quelque chose à voir avec l'espace de noms, je vais enquêter plus loin. Merci. –