2013-06-18 102 views
10

我想要實現的是將一個項目添加到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

爲什麼你不希望使用一個列表? –

+0

@RuneFS,因爲這是我已經實現它:) – Sander

+0

lol我的意思是「爲什麼你不想使用循環?」。打敗了我,結果我寫了些什麼(_need_ coffee) –

回答

32

您可以使用Repeat

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

Demo

如果你已經有一個列表,你不希望創建一個新的使用ToList

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

+1還值得一提的是,參考類型引用同樣的實例將被添加,因此修改任何項目將改變其他49 –

+0

這正是我正在尋找的!謝謝! (只要我被允許,將標記爲答案) – Sander

+0

另外值得一提的是,這將仍然使用循環,某處,但它不會被看到。 –

2

你可以不要直接用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); 
+1

這個例子調用不應該是'listFullOfInts.AddRepeated(addThis,50)'而不是'addRange'嗎? – mz8i

+0

是的,應該:) –

相關問題