Как сделать списки (компактный способ преобразования списка в другой список) в С#?

В моем коде у меня часто есть такие последовательности, как:

List<type1> list1 = ...;
List<type2> list2 = new List<type2>();
foreach(type1 l1 in list1)
{
    list2.Add(myTransformFunc(l1));
}

В Python я могу написать его как

list2 = [myTransformFunc(l1) for l1 in list1]

Есть ли компактный способ записи в С#?

Ответы

Ответ 1

var newList = list.Select(x => YourTransformFunc(x)).ToList();

Или:

var newList = list.Select(YourTransformFunc).ToList();

Подпись Func должна быть:

type2 YourTransformFunc(type1 value)
{
}

Edit:

Методы расширения Select и ToList находятся в пространстве имен System.Linq.

Ответ 2

Вы думаете об этом:

list1.ForEach(x=> list2.Add(myTransformFunc(x)));