Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में IEnumerable को List में और List को वापस IEnumerable में कैसे बदलें

IEnumerable एक इंटरफेस है जो एकल मेथड GetEnumerator() को परिभाषित करता है जो IEnumerator इंटरफेस लौटाता है। यह उन सभी नॉन-जेनेरिक कलेक्शन्स के लिए बेस इंटरफेस है जिन्हें एन्यूमरेट किया जा सकता है।

यह केवल-पढ़ने के लिए एक्सेस के लिए काम करता है जो एक कलेक्शन को लागू करता है जिसे foreach स्टेटमेंट के साथ उपयोग किया जा सकता है।

List<T> क्लास इंडेक्स द्वारा एक्सेस किए जा सकने वाले ऑब्जेक्ट्स की सूची का प्रतिनिधित्व करती है। यह System.Collections.Generic नेमस्पेस के अंतर्गत आती है।

List क्लास का उपयोग विभिन्न प्रकारों जैसे इंटीजर्स, स्ट्रिंग्स आदि के कलेक्शन बनाने के लिए किया जा सकता है। List क्लास सूचियों को खोजने, सॉर्ट करने और हेरफेर करने के लिए मेथड्स भी प्रदान करती है।

उदाहरण 1: IEnumerable से List बनाना

static void Main(string[] args)
{
    // Enumerable.Range से List बनाएं
    IEnumerable<int> enumerable = Enumerable.Range(1, 5);
    List<int> list = new List<int>();
    
    foreach (var item in enumerable)
    {
        list.Add(item);
    }
    
    // या अधिक सरलता से:
    List<int> list2 = enumerable.ToList();
    
    foreach (var item in list2)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}

आउटपुट

1
2
3
4
5

उदाहरण 2: List को IEnumerable में बदलना

static void Main(string[] args)
{
    List<int> list = new List<int> { 1, 2, 3, 4, 5 };
    
    // विधि 1: AsEnumerable() - पसंदीदा
    IEnumerable<int> enumerable1 = list.AsEnumerable();
    
    // विधि 2: इम्प्लिसिट कन्वर्जन (List, IEnumerable को लागू करता है)
    IEnumerable<int> enumerable2 = list;
    
    // विधि 3: Cast<T>() - जब नॉन-जेनेरिक IEnumerable से कन्वर्ट कर रहे हों
    IEnumerable enumerable3 = list.Cast<int>();
    
    foreach (var item in enumerable1)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}

आउटपुट

1
2
3
4
5

रूपांतरण विधियों की तुलना

विधिविवरणउपयोग का मामला
ToList()नई List<T> बनाता हैIEnumerable → List (तत्काल निष्पादन)
AsEnumerable()IEnumerable<T> के रूप में कास्ट करता हैList → IEnumerable (आलसी, कोई कॉपी नहीं)
इम्प्लिसिट कन्वर्जनस्वचालित (List, IEnumerable को लागू करता है)List → IEnumerable (सबसे सरल)
ToArray()नई सरणी बनाता हैIEnumerable → T[]
Cast<T>()नॉन-जेनेरिक से जेनेरिक में कन्वर्टIEnumerable → IEnumerable<T>

महत्वपूर्ण अंतर

  • ToList()/ToArray(): तत्काल निष्पादन, नई कलेक्शन बनाता है, मेमोरी आवंटित करता है
  • AsEnumerable()/इम्प्लिसिट: आलसी, कोई आवंटन नहीं, केवल रैपर
  • List इंडेक्स एक्सेस (list[0]) की अनुमति देता है, IEnumerable नहीं
  • IEnumerable स्ट्रीमिंग/पाइपलाइनिंग के लिए बेहतर, List रैंडम एक्सेस के लिए

प्रदर्शन विचार

// खराब: एकाधिक एन्यूमरेशन (क्वेरी कई बार चलती है)
var query = GetData().Where(x => x > 5);
var count = query.Count();        // पहला एन्यूमरेशन
var list = query.ToList();        // दूसरा एन्यूमरेशन!

// अच्छा: एक बार मटेरियलाइज़ करें
var list = GetData().Where(x => x > 5).ToList();
var count = list.Count;
var first = list.FirstOrDefault();

सारांश

IEnumerable → List: .ToList() या new List<T>(enumerable)
List → IEnumerable: .AsEnumerable() या केवल असाइन करें IEnumerable<T> e = list;
  1. विंडोज 10 और 11 में लीगेसी BIOS को UEFI में कैसे बदलें विंडोज 10 और 11 में लीगेसी BIOS को UEFI में कैसे बदलें

    विंडोज के पुराने संस्करणों में, यदि आप लीगेसी BIOS या मास्टर बूट रिकॉर्ड (MBR) को UEFI या GUID पार्टीशन टेबल (GPT) में बदलना चाहते थे, तो आपको पूरे ऑपरेटिंग सिस्टम को पुनर्स्थापित करने के लिए मजबूर किया जाता था। हालांकि, विंडोज 10 में MBR2GPT नामक एक नया और सरल टूल पेश किया गया था। यह आपको केवल दो क

  1. JavaScript का उपयोग करके <select> लिस्ट आइटम को प्रीसेलेक्ट कैसे करें? JavaScript का उपयोग करके <select> लिस्ट आइटम को प्रीसेलेक्ट कैसे करें?

    JavaScript का उपयोग करके <select> लिस्ट आइटम को प्रीसेलेक्ट करने के लिए, selectedIndex प्रॉपर्टी का उपयोग करें। इस प्रॉपर्टी के लिए आप जो चुनना चाहते हैं उसका इंडेक्स जोड़ें। यहां, <script> टैग के तहत, add_select_id <select> टैग की आईडी है, जबकि add_item_index संख्या में इंडेक्स ह

  1. - Python Dictionary को List में कैसे बदलें?

    Python Dictionary को List में बदलना Python की डिक्शनरी क्लास में इस उद्देश्य के लिए तीन मेथड्स हैं। items(), keys() और values() मेथड्स क्रमशः की-वैल्यू पेयर्स के टपल, केवल कुंजियाँ और केवल मान समाहित करने वाले व्यू ऑब्जेक्ट्स लौटाते हैं। बिल्ट-इन list मेथड इन व्यू ऑब्जेक्ट्स को सूची ऑब्जेक्ट्स में