如何在c#中列出理解(将列表转换为另一个列表的紧凑方式)?

时间:2013-05-23 11:06:01

标签: c# list-comprehension

在我的代码中,我经常使用以下序列:

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#中编写它的简洁方法?

2 个答案:

答案 0 :(得分:24)

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

或者:

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

Func签名应该是:

type2 YourTransformFunc(type1 value)
{
}

修改

扩展方法SelectToList位于System.Linq命名空间中。

答案 1 :(得分:7)

您正在考虑这个问题:

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