2012-03-27 13 views
5

Muszę wymyślić tutaj koło - ale szukałem i nie mogę znaleźć niczego podobnego ...Metoda Linq do tworzenia sekwencji oddzielnych obiektów?

Oto mój kod do tworzenia sekwencji zero lub więcej obiektów, które mają domyślny konstruktor:

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

Moje pytanie jest dość proste: czy istnieje odpowiednik Linq tego powinienem używać?

Odpowiedz

8

Spróbuj tego:

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

Enumerable.Range daje aktualny numer z podanego zakresu jako parametr, ale można po prostu zignorować (nazwany _ w przykładzie).

+0

Wielkie dzięki. Przerobiłem to na czas i (w wersji rozwojowej) jest to znacznie szybsze niż moje ręczne podejście. –

0

Tak, istnieje: var items = Enumerable.Repeat(new YourClass(), 10);

+0

Powoduje * ten sam produkt * 10 razy, a nie 10 różnych przedmiotów. – Jon

+0

Myśli o tym również, ale to stworzy nowy przedmiot i użyje go przez cały czas, a on chce osobnych obiektów. – Botz3000

Powiązane problemy