मुझे कुछ संदेह है कि Enumerators कैसे काम करते हैं, और LINQ। इन दो सरल चयनों पर विचार करें:
List<Animal> sel = (from animal in Animals
join race in Species
on animal.SpeciesKey equals race.SpeciesKey
select animal).Distinct().ToList();
या
IEnumerable<Animal> sel = (from animal in Animals
join race in Species
on animal.SpeciesKey equals race.SpeciesKey
select animal).Distinct();
मैंने अपनी मूल वस्तुओं के नाम बदल दिए ताकि यह अधिक सामान्य उदाहरण जैसा लगे। क्वेरी ही महत्वपूर्ण नहीं है। मैं यह पूछना चाहता हूं:
foreach (Animal animal in sel) { /*do stuff*/ }
मैंने देखा कि यदि मैं उपयोग करता हूं
IEnumerable
, जब मैं "sel" का डिबग और निरीक्षण करता हूं, जो उस मामले में IEnumerable है, तो इसमें कुछ दिलचस्प सदस्य हैं: "आंतरिक", "बाहरी", "innerKeySelector" और "" externalKeySelector ", ये अंतिम 2 दिखाई देते हैं प्रतिनिधि बनना है। "आंतरिक" सदस्य में "पशु" उदाहरण नहीं है, बल्कि "प्रजाति" उदाहरण हैं, जो मेरे लिए बहुत अजीब था। "बाहरी" सदस्य में "पशु" उदाहरण हैं। मुझे लगता है कि दो प्रतिनिधियों ने यह निर्धारित किया है कि इसमें क्या जाता है और इससे बाहर क्या जाता है?मैंने देखा कि यदि मैं "डिस्टिक्ट" का उपयोग करता हूं, तो "इनर" में 6 आइटम हैं (यह गलत है क्योंकि केवल 2 डिस्टिंक्ट हैं), लेकिन "बाहरी" में सही मान शामिल हैं। फिर, शायद प्रत्यायोजित विधियाँ इसे निर्धारित करती हैं लेकिन यह IEnumerable के बारे में जितना मुझे पता है उससे थोड़ा अधिक है।
सबसे महत्वपूर्ण बात, दो विकल्पों में से कौन सा सबसे अच्छा प्रदर्शन-वार है?
बुराई सूची के माध्यम से रूपांतरण .ToList()
?
या शायद सीधे एन्यूमरेटर का उपयोग कर रहा है?
यदि आप कर सकते हैं, तो कृपया थोड़ा स्पष्ट करें या कुछ लिंक फेंक दें जो IEnumerable के इस उपयोग की व्याख्या करते हैं।