คำตอบแรกไม่ควรเป็นคำตอบที่ยอมรับ ฉันเป็นอดีต MVP C # Microsoft ปี 2007
ในทางตรงกันข้ามกับการตอบสนองที่ได้รับการยอมรับ, ConvertAllมีประสิทธิภาพมากขึ้นกว่าการรวมกันของและSelectToList()
ก่อนอื่นConvertAllคือเร็วกว่าอย่างเคร่งครัดและใช้หน่วยความจำขั้นต่ำในการทำเช่นนั้น เหมือนกับ Array.ConvertAll vs Select และ ToArray สิ่งนี้จะชัดเจนมากขึ้นด้วยอาร์เรย์ที่มีความยาวมากขึ้นหรือการเรียกหลายสายภายในลูป
1) ConvertAllทราบขนาดของรายการสุดท้ายและหลีกเลี่ยงการจัดสรรอาร์เรย์ฐานใหม่ ToList() จะทำการปรับขนาดอาร์เรย์หลาย ๆ ครั้ง
2) ToListจะทำการIEnumerable<>โทรอินเทอร์เฟซที่ช้าลงในขณะที่ConvertAllจะวนผ่านอาร์เรย์พื้นฐานโดยไม่ต้องมีการโทรเพิ่มเติมหรือการตรวจสอบช่วง
3) เลือกจะสร้างIEnumerable<T>วัตถุพิเศษ