ConvertAllविस्तार नहीं है, यह सूची वर्ग में एक विधि है। आपको ToListपरिणाम पर कॉल करने की आवश्यकता नहीं है क्योंकि यह पहले से ही एक सूची है:
List<int> list2 = list.ConvertAll(x => 2 * x);
तो, अंतर यह है कि ConvertAllविधि का उपयोग केवल एक सूची में किया जा सकता है, और यह एक सूची देता है। इस Selectपद्धति का उपयोग किसी भी संग्रह पर किया जा सकता है जो IEnumerable<T>इंटरफ़ेस को लागू करता है, और यह एक रिटर्न देता है IEnumerable<T>।
इसके अलावा, वे अलग तरह से प्रसंस्करण करते हैं, इसलिए विभिन्न स्थितियों में उनकी ताकत होती है। ConvertAllजबकि सूची के माध्यम से विधि रन और, एक ही बार में एक नई सूची बनाता Selectविधि आलसी निष्पादन का उपयोग करता है और के रूप में आप उन्हें जरूरत केवल आइटम संसाधित करता है। यदि आपको सभी आइटम की आवश्यकता नहीं है, तो Selectविधि अधिक कुशल है। दूसरी ओर, एक बार ConvertAllसूची वापस आ जाने के बाद, आपको मूल सूची रखने की आवश्यकता नहीं है।