Создать список из другого списка
Скажем, у меня есть:
class Plus5 {
Plus5(int i) {
i+5;
}
}
List<int> initialList = [0,1,2,3]
Как я могу создать из initialList
другой список, вызывающий конструктор Plus5()
для каждого элемента initialList.
Здесь что-то лучше, чем следующее?
List<Plus5> newList = new List<Plus5>();
initialList.ForEach( i => newList.Add(Plus5(int)));
Ответы
Ответ 1
Как я могу создать, из initialList, другой список, вызывающий Plus5() конструктор для каждого элемента initialList?
Итак, результат List<Plus5> newList
и вы хотите создать новый Plus5
для каждого int
в initialList
:
List<Plus5> newList = initialList.Select(i => new Plus5(i)).ToList();
Если вы хотите выполнить микро-оптимизацию (сохранение памяти):
List<Plus5> newList = new List<Plus5>(initialList.Count);
newList.AddRange(initialList.Select(i => new Plus5(i)));
Ответ 2
Используйте LINQ, чтобы добавить 5 к каждому номеру в вашем списке.
var result = initialList.Select(x => x + 5);
Ответ 3
Вы можете использовать LINQ как указано выше.
var result = initialList.Select(x => x + 5).ToList();
Если у вас есть метод (например, Plus5), он будет выглядеть так
int Plus5(int i)
{
return I + 5;
}
var result = initialList.Select(Plus5).ToList();
Ответ 4
List<Plus5> result = new List<Plus5>(InitialList.Select(x=>new Plus5(x)).ToList()));