2011-06-20 17 views
6

इस तरह देखते हुए कुछ:सुरुचिपूर्ण रास्ता

var results = theElement.Element("Blah").Element("Whatever").Elements("Something"); 

वहाँ एक अशक्त ब्ला या जो भी तत्व तो परिणाम से निपटने के लिए एक सुंदर तरीका सिर्फ अशक्त या इन में खाली है मामलों?

मुझे पता है कि मैं क्वेरी को विभाजित कर सकता हूं और मैन्युअल रूप से इन चेकों को कर सकता हूं लेकिन सोच रहा था कि क्या कुछ और संक्षिप्त था।

उत्तर

6

आप अपने लिए ऐसा करने के लिए कुछ एक्सटेंशन विधियां जोड़ सकते हैं। Element विधि के लिए आप शून्य या तत्व स्वयं वापस कर देंगे। 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 विधि का उपयोग करने के बजाय शून्य के लिए।

+0

बिल्कुल सही। धन्यवाद। – MangoBrainz

+0

उम्मीद है कि आपके कीबोर्ड से .net फ्रेमवर्क v.next पर उम्मीद है। –

संबंधित मुद्दे