舉例來說,如果我有
List<Item> myList = new List<Item>;
//added 100 of Items to myList
//then I want to grab items at indices 50 - 60
List<Item> myNewList = myList.?
如何做到這一點W/O通過myList中循環? 謝謝。
舉例來說,如果我有
List<Item> myList = new List<Item>;
//added 100 of Items to myList
//then I want to grab items at indices 50 - 60
List<Item> myNewList = myList.?
如何做到這一點W/O通過myList中循環? 謝謝。
有一種方法可以檢索這些項目,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
var myNewList = myList.Skip(50).Take(10);
非常整齊的解決方案。 – 2012-07-19 18:19:12
通過閱讀「跳過」和「採取」的文檔,看起來他們使用底層的IEnumerable邏輯。這是否意味着性能是O(跳過的項目數量)?即跳過100比跳過50慢? – 2012-07-23 22:26:44
@TedSpence是的,它必須是。不確定是否執行了特定的優化,如檢查基礎IEnumerable是否爲IList等。從這些鏈接看起來不是這樣的,列表
什麼:
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);
可能OP想要11項;) – 2012-07-19 18:19:14
可惜這不適用於'IList'和'IReadOnlyList'。 – Arek 2017-10-05 12:35:12