Вы можете добавить несколько методов расширения, чтобы сделать это для вас. Для метода Element
вы должны вернуть null или сам элемент. Для метода Elements
вы должны вернуть пустой результат или целевые элементы.
Это методы расширения:
public static class XElementExtensions
{
public static XElement ElementOrDefault(this XElement element, XName name)
{
if (element == null)
return null;
return element.Element(name);
}
public static IEnumerable<XElement> ElementsOrEmpty(this XElement element, XName name)
{
if (element == null)
return Enumerable.Empty<XElement>();
return element.Elements(name);
}
}
Вы можете использовать их следующим образом:
var query = theElement.ElementOrDefault("Blah")
.ElementOrDefault("Whatever")
.ElementsOrEmpty("Something");
if (query.Any())
// do something
else
// no elements
Если вы не запрашиваете ElementsOrEmpty
, а ваш последний запрос - ElementOrDefault
, вы должны проверить нулевое значение вместо использования метода Enumerable.Any
.