2009-10-15 13 views
17

साथ प्रयोग करने योग्य मैं Aspose कोशिकाओं का उपयोग कर रहा एक्सेल स्प्रेडशीट हेरफेर करने के लिए। http://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.htmlकन्वर्ट CollectionBase सूची करने के लिए या डेटा प्रकार Linq

मैं कुछ करने के लिए इस प्रकार है कि मुझे Linq का उपयोग करने की अनुमति देता है परिवर्तित करना चाहते हैं:

इस लिंक को देख: एपीआई में प्रकार के स्प्रेडशीट में चित्र का एक संग्रह है, जो CollectionBase से निकला है भाव

क्या इस के लिए विकल्प क्या हैं?

मुझे लगता है कि मैं इसे फिर से चालू कर सकता हूं और इसे मैन्युअल रूप से new List<Picture> में जोड़ सकता हूं लेकिन क्या ऐसा करने का एक बेहतर तरीका है?

मैं इस सवाल Adding IEnumerable<T> to class derived from CollectionBase

लेकिन मैं स्पष्ट रूप से वर्ग कि CollectionBace लागू करता है पर नियंत्रण की जरूरत नहीं है के रूप में यह एक तीसरी पार्टी के उत्पाद है

उत्तर

49

बस गैर पर Enumerable.Cast<T>() विस्तार विधि का उपयोग पढ़ा है सामान्य IEnumerable इंटरफेस, आप एक प्रश्न अभिव्यक्ति में परोक्ष कर सकते हैं जो:

var query = from Picture picture in pictures 
      where ... 
      select ...; 

या स्पष्ट रूप से, उदाहरण के लिए आप notatio डॉट उपयोग करना चाहते हैं n:

var query = pictures.Cast<Picture>() 
        .Where(...) 
        .Select(...); 

Cast<T>() के लिए एक वैकल्पिक OfType<T>() है - जो मूल रूप से किसी भी तत्व है जो सही प्रकार के नहीं हैं पर ध्यान नहीं देता। इस मामले में मुझे लगता है कि Cast<T>() हालांकि अधिक उपयुक्त है।

आप जो भी कारण के लिए एक List<T> करने के लिए पूरे संग्रह कन्वर्ट करने के लिए चाहते हैं, इतना आसान भी है:

List<Picture> list = pictures.Cast<Picture>().ToList(); 
संबंधित मुद्दे