我知道在Python中,你可以這樣做,但myList[1:20]
是有什麼在C#相似?如何在C#中截斷列表?
10
A
回答
28
var itemsOneThroughTwenty = myList.Take(20);
var itemsFiveThroughTwenty = myList.Skip(5).Take(15);
19
您可以使用List<T>.GetRange()
:
var subList = myList.GetRange(0, 20);
從MSDN:
創建範圍的元素的淺拷貝源
List<T>
。
public List<T> GetRange(int index, int count)
2
SANS LINQ quicky ...
while (myList.Count>countIWant)
myList.RemoveAt(myList.Count-1);
0
public static IEnumerable<TSource> MaxOf<TSource>(this IEnumerable<TSource> source, int maxItems)
{
var enumerator = source.GetEnumerator();
for (int count = 0; count <= maxItems && enumerator.MoveNext(); count++)
{
yield return enumerator.Current;
}
}
+0
現在你可能會考慮添加一些解釋性文本,因爲經驗較少的用戶可能很難理解你的回答。 – Raad 2013-03-06 15:01:45
3
這可能是效率是有幫助,如果你真的想截斷名單,無法進行復印。雖然python示例創建了一個副本,但最初的問題確實是關於截斷列表。
給定一個列表<>目標「清單」,你想第1到第20個元件
list.RemoveRange(20, list.Count-20);
這確實到位。這仍然是O(n),因爲必須刪除每個對象的引用,但應該比任何其他方法快一點。
相關問題
- 1. 如何在Visual C++中截斷文件?
- 2. 截斷在C#
- 3. 如何使用C#截斷表格#
- 4. 如何在軌中截斷連接表?
- 5. 截斷數據列C#
- 6. 如何從截斷的表
- 7. 如何截斷HTML表格
- 8. 如何在C截斷地址
- 9. 用jquery截斷列表
- 10. 方案 - 截斷列表
- 11. 截斷字典列表值
- 12. 在事務中截斷Oracle臨時表,截斷* ALL *臨時表
- 13. 在事務中截斷表
- 14. 如何截斷表格中的文字?
- 15. 如何從JDBC中截斷Postgresql的表
- 16. 截斷陣列
- 17. 列表中的TextView被截斷
- 18. C# - 在位置後截斷
- 19. 如何截斷在.NET
- 20. MySQL表格 - 截斷還是不截斷?
- 21. Azure截斷表
- 22. 截斷表sqlkorma
- 23. BeautifulSoup截斷表
- 24. 截斷表?
- 25. 發佈的消息在列表視圖中被截斷。我如何包裝,而不是截斷
- 26. 截斷ASP.NET MVC C#
- 27. 如何截斷wp_rss
- 28. 如何截斷列以創建索引?
- 29. 在C++中截斷十進制值
- 30. Windows Phone - C# - 在IsolatedStorage中截斷文件
請注意,這些Linq擴展實際上創建了一個IEnumerable <>,它在N項後停止,而不是創建新的數組/列表。 (這是通過對變量類型使用'var'隱藏的,如果截斷後的代碼迭代遍歷新列表很多次,那麼實際上每次都會重新計算表達式樹*,在這種情況下,你可能想在末尾加上一個'.ToList()'來強制枚舉項目並創建一個新列表 – JaredReisinger 2010-08-06 23:24:43