2012-07-19 85 views

回答

21

有一種方法可以檢索這些項目,List.GetRange。 http://msdn.microsoft.com/en-us/library/21k0e39c.aspx

List<Item> myList = new List<Item>; 
myList.GetRange(50, 10); // Retrieves 10 items starting with index #50 
+1

可能OP想要11項;) – 2012-07-19 18:19:14

+0

可惜這不適用於'IList'和'IReadOnlyList'。 – Arek 2017-10-05 12:35:12

3
var myNewList = myList.Skip(50).Take(10); 
+0

非常整齊的解決方案。 – 2012-07-19 18:19:12

+0

通過閱讀「跳過」和「採取」的文檔,看起來他們使用底層的IEnumerable邏輯。這是否意味着性能是O(跳過的項目數量)?即跳過100比跳過50慢? – 2012-07-23 22:26:44

+1

@TedSpence是的,它必須是。不確定是否執行了特定的優化,如檢查基礎IEnumerable是否爲IList等。從這些鏈接看起來不是這樣的,列表 .GetRange對於更大的集合將更有效率:https://icodeit.wordpress.com/2012/08/27/performance-of-skip-and-take-in -linq-to-objects /,http://geekswithblogs.net/BlackRabbitCoder/archive/2012/03/29/c.net-little-wonders-skip-and-take.aspx – nawfal 2015-07-25 09:37:58

0

什麼:

 List<string> myList = new List<string>(); 

     //added 100 of Items to myList 
     for (int i=0; i<100; ++i) 
     { 
      myList.Add("blablabla"); 
     } 

     //then I want to grab items at indices 50 - 60 
     // Note: 50 - 60 inclusivly are actually 11 items 
     List<string> myNewList = myList.GetRange(50, 11); 
相關問題