2010-08-23 11 views
6

मैं एक सूची है और मैं एक IEnumerable, तथापि List.GetEnumerator() List.Enumerator रिटर्न जरूरत है ...सूची <T> से IENumerable <T> कैसे प्राप्त करें?

वहाँ होने का एक आसान तरीका है (करने के लिए कास्टिंग?) एक IEnumerator? (वर्तमान में मैं एक पाश के साथ इस समाधान कर लिया है, फिर भी मैं प्रगणक कास्टिंग कहीं ज्यादा बेहतर समाधान होगा महसूस हो रहा है) ...

+5

'सूची ' पहले से ही लागू होता है 'IENumerable ' तो आप क्या करने की कोशिश कर रहे हैं? –

+0

क्या आपका मतलब है 'आईएनयूमेरेटर '? –

+0

संभावित रूप से संबंधित है, हालांकि इसकी संभावना नहीं है: http://msmvps.com/blogs/jon_skeet/archive/2010/07/27/iterate-damn-you.aspx – Kobi

उत्तर

15

एक List<T> पहले से ही एक IEnumerable<T> है।

+2

'सूची ' '' numerable 'के रूप में उपयोग करने में सक्षम होने के लिए अपनी फ़ाइल के शीर्ष पर 'System.Linq' का उपयोग करना न भूलें। –

+1

@ लुकास सेनोव्स्की: आप गुमराह हैं, आपको केवल विस्तार विधियों के लिए इसकी आवश्यकता है। – leppie

+0

आप सही हैं। मेरा मुद्दा यह है कि जब मुझे 'IENumerable ' की आवश्यकता होती है, तो मुझे इसकी विस्तार विधियों के कारण इसकी आवश्यकता होती है और मैं कभी-कभी 'System.Linq' का उपयोग करना शामिल करना भूल जाता हूं। –

3

यह परोक्ष बदल देंगे, तो IEnumerable<MyType> foo = myList;

+2

कोई कास्टिंग नहीं होता है, क्योंकि यह IENumerable लागू नहीं होता है, नहीं करने योग्य – Dykam

4

मुझे लगता है कि आप पाएंगे कि एक सामान्य सूची IENumerable लागू करती है, इसलिए आपको कुछ भी करने की आवश्यकता नहीं है।

आप इस स्थिति का उपयोग करने की कोशिश कर रहे हैं?

3

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

public IEnumerable<T> GetIEnumerable() 
{ 
    List<T> yourListOfT = GetList(); 
    return yourListOfT; 
} 
2

एक सूची को लागू करता है IEnumerable तो बस अपनी सूची का उपयोग करें।

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