È possibile aggiungere alcuni metodi di estensione per farlo. Per il metodo Element
si restituisce null o l'elemento stesso. Per il metodo Elements
si restituirebbe un risultato vuoto o gli elementi di destinazione.
Questi sono i metodi di estensione:
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);
}
}
È possibile usarli in questo modo:
var query = theElement.ElementOrDefault("Blah")
.ElementOrDefault("Whatever")
.ElementsOrEmpty("Something");
if (query.Any())
// do something
else
// no elements
Se non sei query per ElementsOrEmpty
e la tua ultima richiesta è per ElementOrDefault
si dovrebbe verificare per null invece di utilizzare il metodo Enumerable.Any
.
fonte
2011-06-20 16:36:08
Perfetto. Grazie. – MangoBrainz
Dalla tastiera al framework .net v.next, si spera. –