2012-03-27 6 views
5

Ich muss das Rad hier neu erfinden - aber ich habe gesucht und ich kann nichts ganz das gleiche finden ...Linq-Methode zum Erstellen einer Sequenz von separaten Objekten?

Hier ist mein Code zum Erstellen einer Sequenz von null oder mehr Objekte, die einen Standardkonstruktor haben:

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

Meine Frage ist ganz einfach: Gibt es ein Linq-Äquivalent von diesem sollte ich verwenden?

Antwort

8

Try this:

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

Enumerable.Range geben Sie die aktuelle Nummer aus dem angegebenen Bereich als Parameter, aber Sie können einfach, dass (wie _ im Beispiel genannt) ignorieren.

+0

Vielen Dank. Ich habe dies zeitlich festgelegt und (in Release-Builds) ist dies deutlich schneller als mein handgerollter Ansatz. –

0

Ja gibt es: var items = Enumerable.Repeat(new YourClass(), 10);

+0

Dies liefert * den gleichen Artikel * 10 Mal, nicht 10 verschiedene Artikel. – Jon

+0

Dachte auch zuerst daran, aber das wird einmal ein neues Objekt erschaffen und das immer nutzen, und er möchte getrennte Objekte. – Botz3000

Verwandte Themen