16

在我的代码中,我经常有这样的序列:

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]

有没有一种紧凑的方法可以用 C# 编写它?

4

2 回答 2

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

或者:

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

函数签名应该是:

type2 YourTransformFunc(type1 value)
{
}

编辑:

扩展方法SelectToListSystem.Linq命名空间中。

于 2013-05-23T11:07:46.670 回答
7

你正在考虑这个:

list1.ForEach(x=> list2.Add(myTransformFunc(x)));
于 2013-05-23T11:10:31.737 回答