Tengo una colección que representa la población (M, F) para cada año de edad.Para. Tomar() o no. Tomar(), esa es la pregunta
Para proyectar la población a través del tiempo, primero tengo que hacer los cálculos con las mujeres para que pueda calcular el porcentaje de hombres y mujeres recién nacidos en base a una constante estadística de masculinidad.
Dicho esto, tengo una primera matriz que contiene población masculina y femenina por año de edad.
// Where 1 is the evaluation Id and 2009 the year I want the
// initial population information for.
IList<AnnualPopulation> initialPopulation =
LoadMatrix<AnnualPopulation>(1, 2009);
Ahora, con el fin de proyectar la población de mujeres en primer lugar, que utilice la siguiente:
IList<AnnualPopulation> initialWomenPopulation = (
from w in initialPopulation
where String.Equals("F", w.Gender)
select w
).FirstOrDefault();
Y tengo que tener en cuenta las tasas de mortalidad, tanto para el actual (año inicial (2009)) y la año para el cual deseo proyectar, del cual ya tengo las tasas de mortalidad para cada año de edad.
IList<AnnualDeathRate> deathRates = LoadMatrix<AnnualDeathRate>(1, 2009)
Esto carga las tasas de desvanecimiento de 2009 y posteriores para cada año de edad. Por lo tanto, para considerar solo 2009 y 2010, digamos, utilicé el siguiente código Linq.
AnnualDeathRate[] femaleDeathRates = (
from fdr in deathRates
where (string.Equals("F", fdr.Gender))
select fdr
).TakeWhile(dr =>
initialWomenPopulation.Year == dr.Year ||
dr.Year == initialWomenPopulation.Year + 1
).ToArray()
Preguntas
- ¿Hubiera sido mejor si hubiera utilizado
.Take(2)
junto con unawhere
condición suplementaria de ladr.Year
? - ¿Hay mejores alternativas?
- ¿Mi enfoque vale la pena considerarlo?
+1 Para ilustrar el comportamiento del método 'TakeWhile'. Consideraré usar 'Take' en su lugar. Además de mi preocupación "Take()", me gustaría asegurarle al usuario que puede confiar en los índices "fix" para indexar las colecciones. Este es un proyecto de modernización de aplicaciones Fortran y el usuario se utiliza para usar índices y trabajar con matrices multidimensionales. Entonces, supongo que debería 'OrderBy' y' Take' después. ¿Mi lógica suena bien? –
@Lo siento, creo que mi cerebro se ha salido todo el día porque su pregunta parece lógica, pero me cuesta imaginarme lo que quiere decir. – Davy8