ऐसे समय होते हैं, जब ToList()
आपके प्रश्नों पर उस समय और जिस क्रम में आप उनसे अपेक्षा करते हैं, उस पर अमल सुनिश्चित करने के लिए आपके लिनक प्रश्नों को करना महत्वपूर्ण हो सकता है। वे परिदृश्य हालांकि दुर्लभ हैं और किसी को भी बहुत चिंता नहीं करनी चाहिए जब तक कि वे वास्तव में उनमें भाग न लें।
लंबी कहानी छोटी, IEnumerable
कभी भी आपको केवल पुनरावृत्ति की आवश्यकता है, का उपयोग करें IList
जब आपको सीधे अनुक्रमित करने की आवश्यकता होती है और एक गतिशील आकार के सरणी की आवश्यकता होती है (यदि आपको निश्चित आकार के सरणी पर अनुक्रमण की आवश्यकता है तो बस एक मानक सरणी का उपयोग करें)।
निष्पादन समय की बात के लिए, आप हमेशा एक IEnumerable
चर के रूप में एक सूची का उपयोग कर सकते हैं , इसलिए स्वतंत्र रूप से एक निष्पादन IEnumerable
करके वापस लौटने के लिए स्वतंत्र महसूस करें .ToList();
, या एक पैरामीटर के रूप में पारित IEnumerable
करने .ToList()
के IEnumerable
लिए निष्पादित करने के लिए सही है और उसके बाद। बस इस बात का ध्यान रखें कि जब भी आप निष्पादन के लिए बाध्य .ToList()
करते हैं, तो उस IEnumerable
चर पर न टांगें जो आपने अभी-अभी किया है और इसे फिर से निष्पादित करें, अन्यथा आप अपनी LINQ क्वेरी में पुनरावृत्तियों को अनावश्यक रूप से दोगुना कर देंगे।
एमवीसी के संबंध में, यहां ध्यान देने योग्य कुछ खास नहीं है। यह .NET के बाकी नियमों के अनुसार ही निष्पादन समय नियमों का पालन करने वाला है, मुझे लगता है कि आपके पास कोई ऐसा व्यक्ति हो सकता है जो अतीत में विलंबित निष्पादन शब्दार्थ के कारण भ्रम की स्थिति में था और उसने एमवीसी पर यह आरोप लगाते हुए कहा कि यह किसी तरह से संबंधित है, लेकिन यह है नहीं। विलंबित निष्पादन शब्दार्थ पहले सभी को भ्रमित करता है (और बाद में एक अच्छे के लिए भी; वे एक स्पर्श के रूप में हो सकते हैं)। फिर भी, बस इसके बारे में चिंता न करें जब तक आप वास्तव में यह सुनिश्चित करने के बारे में परवाह नहीं करते हैं कि LINQ क्वेरी दो बार निष्पादित नहीं होती है या इसे किसी अन्य कोड के सापेक्ष एक निश्चित क्रम में निष्पादित करने की आवश्यकता होती है, जिस बिंदु पर अपना चर स्वयं को असाइन करें। निष्पादन को मजबूर करने के लिए और आप ठीक हो जाएंगे।