ConvertAll
không phải là một phần mở rộng, nó là một phương thức trong lớp danh sách. Bạn không cần phải gọi ToList
kết quả vì nó đã là một danh sách:
List<int> list2 = list.ConvertAll(x => 2 * x);
Vì vậy, sự khác biệt là ConvertAll
phương thức chỉ có thể được sử dụng trên một danh sách và nó trả về một danh sách. Các Select
phương pháp có thể được sử dụng trên bất kỳ bộ sưu tập mà cụ các IEnumerable<T>
giao diện, và nó trả về mộtIEnumerable<T>
.
Ngoài ra, họ xử lý khác nhau, vì vậy họ có thế mạnh của mình trong các tình huống khác nhau. Các ConvertAll
phương pháp chạy qua danh sách và tạo ra một danh sách mới trong một đi, trong khi Select
phương pháp sử dụng thực hiện lười biếng và chỉ xử lý các mặt hàng như bạn cần họ. Nếu bạn không cần tất cả các mục, Select
phương pháp hiệu quả hơn. Mặt khác, khi ConvertAll
đã trả lại danh sách, bạn không cần phải giữ lại danh sách ban đầu.