我想要实现的是将一个项目添加到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?我有一个模糊的记忆,看到如何做到这一点,但我无法找到它。有什么想法吗?
答案 0 :(得分:42)
您可以使用Repeat
:
List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList();
如果您已有一个列表而又不想使用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);