2012-03-27 11 views
5

Debo reinventar la rueda aquí, pero he buscado y no encuentro nada igual ...Método de Linq para crear una secuencia de objetos separados?

Aquí está mi código para crear una secuencia de cero o más objetos que tengan un constructor predeterminado:

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

Mi pregunta es bastante simple: ¿Hay un equivalente de Linq de esto debería estar usando?

Respuesta

8

Prueba esto:

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

Enumerable.Range le dará el número actual de la gama especificada como parámetro, pero se puede simplemente ignorar que (nombrados como _ en el ejemplo).

+0

Muchas gracias. Calculé esto y (en compilaciones de lanzamiento) esto es significativamente más rápido que mi enfoque enrollado a mano. –

0

Sí, hay: var items = Enumerable.Repeat(new YourClass(), 10);

+0

Esto devuelve * el mismo artículo * 10 veces, no 10 artículos diferentes. – Jon

+0

Pensé en eso primero también, pero eso creará un nuevo elemento una vez y lo usará todo el tiempo, y él quiere objetos separados. – Botz3000

Cuestiones relacionadas