2011-04-20 7 views
5

La solución más eficiente y típico que lo que podía pensar es:¿Cuáles son algunas maneras de obtener una lista de DateTime.Now.AddDays (0..7) dinámicamente?

var dates = new DateTime[7]; 
for (int i = 0; i < 7; i++) 
    dates[i] = DateTime.Now.AddDays(i); 

Esto me volverá siete (7) fechas en una matriz, que es el resultado que quiero. I creo que ruby ​​puede hacer algo como esto, simplemente especificando puntos pero no recuerdo.

Sin embargo, ¿hay un enfoque más eficiente? ¿O hay alguna forma de implementar esto usando linq (posiblemente a través del método Aggregate?), Si es así, incluso si no es la solución más eficiente que me gustaría ver.

Lo ideal es que no requiera volver a declarar ninguna instancia de objeto por la cantidad de "veces" que necesita, y le permite especificar DateTime.Now solo una vez y la cantidad de elementos en la matriz/lista que desea solo una vez .

Gracias

Respuesta

9

yo usaría Enumerable.Range, que es muy útil cuando se trata de generar secuencias de datos:

var now = DateTime.Now; 
var dates = Enumerable.Range(0, 7).Select(n => now.AddDays(n)).ToArray(); 
+1

Ahora que es atractivo, gracias. Veré qué otras respuestas obtengo antes de aceptar la tuya; sin embargo, realmente me gusta. – GONeale

+0

@GONeale: Creo que puedes aceptar esto. – Kangkan

+0

¿Cómo se compara esto, según la CPU con el estándar para el ciclo? – GONeale

Cuestiones relacionadas