我有一个代表每个年龄段的人口(M,F)的集合。
为了通过时间来预测人口,我必须首先对女性进行计算,以便我可以根据男性出生率的统计常数来计算新出生的男性和女性的百分比。
也就是说,我有一个包含每岁男性和女性人口的第一个矩阵。
// Where 1 is the evaluation Id and 2009 the year I want the
// initial population information for.
IList<AnnualPopulation> initialPopulation =
LoadMatrix<AnnualPopulation>(1, 2009);
现在,为了首先预测女性人口,我使用以下内容:
IList<AnnualPopulation> initialWomenPopulation = (
from w in initialPopulation
where String.Equals("F", w.Gender)
select w
).FirstOrDefault();
我必须考虑当前(初始年份(2009 年))和我希望预测的年份的死亡率,我已经从中获得了各年龄段的死亡率。
IList<AnnualDeathRate> deathRates = LoadMatrix<AnnualDeathRate>(1, 2009)
这加载了 2009 年及以后每个年龄的死亡率。因此,为了仅考虑 2009 年和 2010 年,假设我使用了以下 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()
Questions
.Take(2)
会更好吗?连同补充 where
dr.Year
上的条件? 最佳答案
我会在您的 TakeWhile
中包含该条款调用 where
查询的子句,是否有理由不这样做?从长远来看,两者之间可能没有太大区别,但TakeWhile
似乎没有必要并使您的代码更加困惑,IMO。
关于.net - .Take() 还是不.Take(),这是个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437455/