सूची से IEnumerable प्रारूप में परिवर्तित करें


97
IEnumerable<Book> _Book_IE
List<Book> _Book_List

प्रारूप _Book_Listमें बदलने के लिए मैं कैसे करूंगा IEnumerable?


58
आपका नामकरण सम्मेलन अनपेक्षित रूप से अद्वितीय है।
Kirk Woll

6
कम से कम उसके पास एक सम्मेलन है, एह?
फेमारेफ

1
लोगों की सोच के लिए कि कर्क की टिप्पणी में इतने "अप" क्यों हैं, यह इसलिए है क्योंकि आप अपने वैरिएबल को उस तरह से नाम नहीं दे सकते जिस तरह से आप चाहते हैं! उसके लिए कन्वेंशन हैं, और यह अत्यधिक अनुशंसा की जाती है कि आप उनका अनुसरण करें, ताकि आपका कोड स्पष्ट और समझने योग्य हो, इससे स्टैक-ओवरफ्लो या गिटहब जैसी जगहों पर आपकी मदद करने की कोशिश करने वाले लोगों को मदद मिलेगी! अधिक जानकारी के लिए पुस्तक पढ़ें: रॉबर्ट सी। मार्टिन द्वारा क्लीन कोड
KADEM मोहम्मद

1
... और Smurf नामकरण विरोधी पैटर्न का शिकार हुए बिना नामकरण सम्मेलन के बारे में कैसे जाना जाए? devcards.io/smurf-naming-conference आमतौर पर एक नामस्थान जहाँ आवश्यक हो विशिष्टता प्रदान कर सकता है।
Meadock

जवाबों:


150

आपको इसे परिवर्तित करने की आवश्यकता नहीं है। इंटरफ़ेस को List<T>लागू करता IEnumerable<T>है इसलिए यह पहले से ही एक enumerable है।

इसका मतलब है कि यह निम्नलिखित के लिए पूरी तरह से ठीक है:

public IEnumerable<Book> GetBooks()
{
    List<Book> books = FetchEmFromSomewhere();    
    return books;
}

साथ ही साथ:

public void ProcessBooks(IEnumerable<Book> books)
{
    // do something with those books
}

जिसका आह्वान किया जा सकता है:

List<Book> books = FetchEmFromSomewhere();    
ProcessBooks(books);

63

आप असेंबली सिस्टम में असेंबल करने के लिए विस्तार विधि का उपयोग कर सकते हैं। सिस्टम और सिस्टम। इंक नाम:

List<Book> list = new List<Book>();
return list.AsEnumerable();

जैसा कि इस MSDN लिंक ने संकलन-समय में सूची के प्रकार को बदल दिया है। इससे आपको केवल अपने संग्रह की गणना करने के लिए ही लाभ मिलेगा (इसके लिए MSDN उदाहरण देखें)।


सरल दिखता है लेकिन परिवर्तित करने का सबसे आसान तरीका है। धन्यवाद
Ishwor खनाल

1
यदि आपको संग्रह में कुछ जोड़ने का अनुमान नहीं है, तो आपको IEnumerable का उपयोग / वापस करना चाहिए।
अज़_


11

जहां तक ​​मुझे पता है कि List<T>इम्प्लाइज हैं IEnumerable<T>। इसका मतलब है कि आपको कुछ भी बदलने या कास्ट करने की आवश्यकता नहीं है।


4
निर्भर करता है। यदि आप एक स्थापित करने के लिए प्रयास करते हैं तो IEnumerable<IList<obj>>एक के लिए IEnumerable<IEnumerable<obj>>यह इसमें दूसरा पहले एक से विरासत नहीं है एक संकलक त्रुटि देता है।
एमबोरसा

4
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;

यदि यह सामान्य संस्करण है:

_Book_IE = _Book_List;

यदि आप गैर-जेनेरिक में बदलना चाहते हैं:

IEnumerable ie = (IEnumerable)_Book_List;

5
आपको यहां कलाकारों की जरूरत नहीं है।
जॉन स्कीट

2
यदि आप गैर-जेनेरिक इंटरफ़ेस से विशिष्ट तरीके चाहते हैं, तो उनमें से कुछ स्पष्ट रूप से लागू किए गए हैं, या मैं यहां गलत ट्रैक पर हूं?
फेमारेफ

0

आपको

using System.Linq;

IEnumerableअपने विकल्पों का उपयोग करने के लिए List

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.