2011-06-20 7 views

risposta

6

È 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.

+0

Perfetto. Grazie. – MangoBrainz

+0

Dalla tastiera al framework .net v.next, si spera. –

Problemi correlati