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