在我的代码中,我经常使用以下序列:
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#中编写它的简洁方法?
答案 0 :(得分:24)
var newList = list.Select(x => YourTransformFunc(x)).ToList();
或者:
var newList = list.Select(YourTransformFunc).ToList();
Func签名应该是:
type2 YourTransformFunc(type1 value)
{
}
修改
扩展方法Select
和ToList
位于System.Linq
命名空间中。
答案 1 :(得分:7)
您正在考虑这个问题:
list1.ForEach(x=> list2.Add(myTransformFunc(x)));