15

假设我有:

class Plus5 {
    Plus5(int i) {
         i+5;
     }
}
List<int> initialList = [0,1,2,3]

我如何为 initialList 的每个元素创建initialList另一个列表调用构造函数。Plus5()

这里有比下面更好的东西吗?

List<Plus5> newList = new List<Plus5>();
initialList.ForEach( i => newList.Add(Plus5(int)));
4

4 回答 4

19

如何从 initialList 创建另一个列表,为 initialList 的每个元素调用 Plus5() 构造函数?

所以结果是List<Plus5> newList,你想Plus5为每个intin创建一个新的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)));
于 2013-06-05T22:12:55.483 回答
12

使用 LINQ 将列表中的每个数字加 5。

var result = initialList.Select(x => x + 5);
于 2013-06-05T22:09:04.077 回答
1

您可以将 LINQ 用作提到的 roughnex。

var result = initialList.Select(x => x + 5).ToList();

如果你有一个方法(比如 Plus5),它看起来像这样

int Plus5(int i)
{
    return I + 5;
}

var result = initialList.Select(Plus5).ToList();
于 2013-06-05T22:13:26.173 回答
1
List<Plus5> result = new List<Plus5>(InitialList.Select(x=>new Plus5(x)).ToList()));
于 2013-06-05T22:15:34.603 回答