ConvertAll
не является расширением, это метод класса списка. Вам не нужно вызывать ToList
результат, так как это уже список:
List<int> list2 = list.ConvertAll(x => 2 * x);
Итак, разница в том, что ConvertAll
метод можно использовать только в списке, и он возвращает список. Select
Метод может быть использован в любой коллекции , которая реализует IEnumerable<T>
интерфейс, и он возвращает IEnumerable<T>
.
Кроме того, они по-разному выполняют обработку, поэтому в разных ситуациях у них есть свои сильные стороны. В ConvertAll
методе проходит через список и создает новый список за один раз, в то время как Select
метод использует ленивое выполнение и обрабатывает только те элементы , как вам необходимо. Если вам не нужен весь элемент, Select
метод более эффективен. С другой стороны, после ConvertAll
возврата списка нет необходимости сохранять исходный список.