從列表中選擇特定範圍內的所有項目並將其放入新項目中的最有效方法是什麼?如何從列表中獲取特定範圍內的項目(3-7)?
List<DataClass> xmlList = new List<DataClass>();
這是我的列表,我想將所有DataClass項目之間的範圍(3 - 7)在一個新的列表。
什麼是最有效的方法?一個每次都計算++的foreach循環,直到達到範圍之間的項目並將這些項目添加到新列表中?
從列表中選擇特定範圍內的所有項目並將其放入新項目中的最有效方法是什麼?如何從列表中獲取特定範圍內的項目(3-7)?
List<DataClass> xmlList = new List<DataClass>();
這是我的列表,我想將所有DataClass項目之間的範圍(3 - 7)在一個新的列表。
什麼是最有效的方法?一個每次都計算++的foreach循環,直到達到範圍之間的項目並將這些項目添加到新列表中?
你正在尋找的方法是GetRange:
List<int> i = new List<int>();
List<int> sublist = i.GetRange(3, 4);
var filesToDelete = files.ToList().GetRange(2, files.Length - 2);
從總結:
// Summary:
// Creates a shallow copy of a range of elements in the source System.Collections.Generic.List<T>.
// Parameters:
// index:
// The zero-based System.Collections.Generic.List<T> index at which the range
// starts.
// count:
// The number of elements in the range.
列表實現了一個CopyTo
方法,該方法允許您指定要複製的元素的開始和數量。我建議使用它。
如果由於某種原因,你不喜歡使用GetRange方法,您還可以使用LINQ來編寫以下內容。
List<int> list = ...
var subList = list.Skip(2).Take(5).ToList();
我建議你使用'ToList'擴展名代替:'List
@MartinLiversage請注意,它只是一個視覺差異,除非你正在處理一個匿名類型(在這種情況下你*需要*'ToList')。在功能上兩者幾乎完全相同。 – Servy
請注意,列表
[由開始和結束索引抓取列表- 的一部分]的可能重複(http://stackoverflow.com/questions/11566857/grabbing-a-part-of-the-listitem-by-開始和結束索引) –
nawfal