與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