多次将一个项目添加到同一个列表中

时间:2013-06-18 12:40:25

标签: c# collections

我想要实现的是将一个项目添加到List中,多次不使用循环。

我要在List中添加50个数字,并希望所有这些数字等于,比方说,42。我知道我可以简单地创建一个运行50次的小循环并添加相同的项目再一次,就这样;

List<int> listFullOfInts = new List<int>();
int addThis = 42;
for(int i = 0; i < 50; i++)
    listFullOfInts.Add(addThis);

我想做的事情就是这样;

listFullOfInts.AddRange(addThis, 50);

或者至少与此类似的东西,也许使用Linq?我有一个模糊的记忆,看到如何做到这一点,但我无法找到它。有什么想法吗?

2 个答案:

答案 0 :(得分:42)

您可以使用Repeat

List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList();

Demo

如果您已有一个列表而又不想使用ToList创建一个新列表:

listFullOfInts.AddRange(Enumerable.Repeat(42, 50));

答案 1 :(得分:3)

您不能直接使用LINQ,因为LINQ是无副作用的,但您可以使用System.linq命名空间中的一些内容来构建所需的内容。

public static void AddRepeated<T>(this List<T> self,T item, int count){
  var temp = Enumerable.Repeat(item,count);
  self.AddRange(temp);
}

然后您可以在帖子中提出

listFullOfInts.AddRepeated(addThis, 50);