我想创建一个C#List
整数,从1930年到2010年。在我的头脑中,我能想到的唯一方法是使用{{1} }或for
循环遍历数字之间的每个整数,并将它们分别添加到while
。
我知道C#列表有很多有趣的方法,特别是当你使用Linq时。任何人都可以想到一种更有效的方法吗?
答案 0 :(得分:38)
Enumerable.Range(1930, 81)
(MSDN docs)会为您提供包含您想要的内容的可枚举内容。第一个参数是起始值,第二个参数是项目数。你需要81而不是80,因为你想要1930年至2010年。
如果您明确要将其作为List
,请使用Enumerable.Range(1930, 81).ToList()
。
这种方法在效率方面可能没什么不同,但是代码更简洁。
答案 1 :(得分:8)
使用Enumerable.Range()
var MyList = Enumerable.Range(1930, 2010-1930+1).ToList();
答案 2 :(得分:4)
另外两个答案是正确的,使用Enumberable.Range()
是快速/简单的方法,但我会添加一块。使用DateTime.Now.Year
,这样您就不必每年修复代码。在两个月内,对第二个参数使用硬编码值会使其过时。
List<int> listYears = Enumerable.Range(1930, DateTime.Now.Year - 1930 + 1).ToList();
答案 3 :(得分:1)
所以,虽然这已得到回答(有很好的答案),但为什么不创建一种“收益”(a generator method) - Enumerable.Range
的方法就是这样一种方法是标准的:
IEnumerable<int> InclusiveRange(int s, int e) {
for (int i = s; i <= e; i++) {
yield return i;
}
}
var r = InclusiveRange(1930, 2010).ToList();
快乐的编码。