2016-04-21 93 views
1

有沒有辦法做到以下幾點:Linq重複創建空對象?

var newObjects = Enumerable.Repeat(new MyClass(), 10); 
myList.AddRange(newObjects); 

以上顯然是行不通的,因爲同一個實例中加入10倍。但是,有沒有類似的東西可以使用,或者我需要使用for循環嗎?

+1

''Enumerable.Range'' –

回答

4

一個簡單的辦法是把一個佔位符Enumerable.Repeat,然後用投影來構建你的實例:

var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass()); 

注意:您所提供的例子,你將立即消耗newObjects,所以它應該是好的,這是一個IEnumerable。一般來說,請注意不要多次枚舉newObjects,否則您可能會產生其他意外情況MyClass的副作用。由於此表達式具有構造實例的副作用,因此立即使用ToListToArray立即實現它可能會更好。