C#:构建年份列表作为整数

时间:2010-11-06 17:51:40

标签: c# linq list

我想创建一个C#List整数,从1930年到2010年。在我的头脑中,我能想到的唯一方法是使用{{1} }或for循环遍历数字之间的每个整数,并将它们分别添加到while

我知道C#列表有很多有趣的方法,特别是当你使用Linq时。任何人都可以想到一种更有效的方法吗?

4 个答案:

答案 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();

快乐的编码。