क्या आपके पास एक डिफ़ॉल्ट प्रकार है जिसे आप LINQ प्रश्नों के परिणामों के साथ अपने लेनदेन में उपयोग करना पसंद करते हैं?क्या आप ToList() करते हैं?
डिफ़ॉल्ट रूप से LINQ IEnumerable<>
या शायद IOrderedEnumerable<>
लौटाएगा। हमने पाया है कि List<>
आम तौर पर हमारे लिए अधिक उपयोगी है, इसलिए हमारे कार्यों में ToList()
की अधिकांश आदतों को अपनाया गया है, और निश्चित रूप से List<>
हमारे फ़ंक्शन तर्क और वापसी मूल्यों में उपयोग कर रहा है।
इसका एकमात्र अपवाद LINQ से SQL में रहा है जहां .ToList()
पर कॉलिंग IEnumerable
समय-समय पर गणना करेगी।
हम भी डब्ल्यूसीएफ का व्यापक रूप से उपयोग कर रहे हैं, डिफ़ॉल्ट संग्रह प्रकार System.Array
है। हम अपने शेष कोडबेस के साथ स्थिरता के लिए VS2008 में सेवा संदर्भ सेटिंग्स संवाद में हमेशा इसे System.Collections.Generic.List
में बदलते हैं।
आप क्या करते हैं?
सहमत हैं कि ToList तुरंत मूल्यांकन करता है। हमारी सोच यह है कि LINQtoSQL में इसका प्रदर्शन प्रभाव होने की संभावना है (विशेष रूप से यदि हम कुछ LINQ अभिव्यक्तियों को एक साथ जोड़ रहे हैं), लेकिन जब हम स्मृति में हों तो कोई भी प्रदर्शन हिट लापरवाही होगी - और मनुष्यों के लिए स्थिरता अधिक है जरूरी। –
प्रदर्शन से परे महत्वपूर्ण अंतर हैं। विशेष रूप से, यदि क्वेरी के बारे में कुछ भी (जैसे स्रोत में डेटा) बदलता है, तो स्थगित निष्पादन आपको एक अलग उत्तर देगा। कभी-कभी आप यही चाहते हैं, कभी-कभी यह नहीं होता है। –