2012-03-27 35 views
5

我必須在這裏重新發明輪子 - 但我已經搜索過,找不到任何完全相同的東西...Linq創建一系列單獨對象的方法?

這裏是我的代碼,用於創建零個或多個具有默認構造函數的對象序列:

public static IEnumerable<T> CreateSequence<T>(int n) where T: new() 
{ 
    for (int i = 0; i < n; ++i) 
    { 
     yield return new T(); 
    } 
} 

我的問題很簡單:是否有Linq相當於我應該使用?

回答

8

試試這個:

Enumerable.Range(1,count).Select(_ => new T()); 

Enumerable.Range會給你從指定的範圍爲參數的當前號碼,但你完全可以忽略(命名爲_的例子)。

+0

非常感謝。我對此進行了計時和(在發佈版本中),這比我的手動滾動方法快得多。 – 2012-03-27 09:03:37

0

是的,有:var items = Enumerable.Repeat(new YourClass(), 10);

+0

這將返回*相同的項目* 10次,而不是10個不同的項目。 – Jon 2012-03-27 08:55:35

+0

也想到了這一點,但是這會創建一個新項目並一直使用它,並且他需要單獨的對象。 – Botz3000 2012-03-27 08:56:01

相關問題