Ответ Кирка прямо на деньги.Я хотел бы указать на несколько проблем с вашим кодом.
Эта строка излишне подсчитывает все элементы:
var hasMatch = matchingElements.Count() > 0;
Вы можете заменить его на Any()
, который закончится рано, как только элементнайдено:
var hasMatch = matchingElements.Any();
Далее, проверив, что hasMatch
- это true
, вам следует позвонить First()
вместо FirstOrDefault()
, поскольку вы знаете, что в этой точке должно быть значение.
Сказав это, вы могли бы переписать свой код следующим образом:
var matchingElement = elements.FirstOrDefault(e => e.Name.LocalName == name);
return (string)matchingElement;
Здесь приведение к string
вернет значение элемента, если он был найден, в противном случае он вернет null
.Приведение используется на тот случай, если оно было null
, так как вы не сможете использовать matchingElement.Value
, который выдаст NullReferenceException
, если элемент не найден.Вам также следует рассмотреть возможность использования SingleOrDefault
, если вы ожидаете, что существует только один элемент.