与LINQ单排列我有这样的代码:C#创建
List<int> list = new List<int>();
for (int i = 1; i <= n; i++)
list.Add(i);
我能创造这一个List<int>
与LINQ线?
与LINQ单排列我有这样的代码:C#创建
List<int> list = new List<int>();
for (int i = 1; i <= n; i++)
list.Add(i);
我能创造这一个List<int>
与LINQ线?
List<int> list = Enumerable.Range(1, n).ToList();
List<int> list = Enumerable.Range(1, n).ToList();
如果你需要很多的名单,你会发现下面的扩展方法有用:
public static class Helper
{
public static List<int> To(this int start, int stop)
{
List<int> list = new List<int>();
for (int i = start; i <= stop; i++) {
list.Add(i);
}
return list;
}
}
使用方法如下:
var list = 1.To(5);
当然,对于一般情况,其他人发布的Enumerable.Range事物可能更多,但我想我会分享这个;) You c下次您的Ruby爱好者会说明详细的C#与Enumerable.Range的用法。
如果你正在定义这样的通用扩展方法,为什么不让它返回'IEnumerable'而不是'List '?范围几乎无处不在的已建立的惯例是他们懒惰。 –
2009-10-14 16:19:56
因为它被要求提供列表,而不是IEnumerable 。我只是把这个问题写成这个问题作为一个普通的例子,如何缩短这个问题。为了炫耀你的Ruby同事,你会想避免额外的ToList调用;)当然,如果你认为这个方法值得成为一个通用的方法,那就让它返回IEnumerable 。这甚至应该允许你将它变成一个迭代器块,而不是手动创建列表。 –
OregonGhost
2009-10-14 16:26:02
@Pavel:因为这正是'Enumerable.Range'的作用。 – 2009-10-14 16:46:16