Как получить элементы в определенном диапазоне (3 - 7) из списка?
Каким будет наиболее эффективный способ выбрать все элементы в определенном диапазоне из списка и поместить его в новый?
List<DataClass> xmlList = new List<DataClass>();
Это мой список, и я хотел бы поместить все элементы DataClass между диапазоном (3-7) в новый список.
Что было бы самым эффективным способом? Цикл foreach, который имеет значение count ++ каждый раз, пока он не достигнет элементов между диапазоном и не добавит эти элементы в новый список?
Ответы
Ответ 1
Метод, который вы ищете, 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.
Ответ 2
Если по какой-либо причине вам не нравится использовать метод GetRange, вы также можете написать следующее, используя LINQ.
List<int> list = ...
var subList = list.Skip(2).Take(5).ToList();
Ответ 3
List реализует метод CopyTo
, который позволяет указать начало и количество элементов для копирования. Я бы предложил использовать это.
Смотрите: http://msdn.microsoft.com/en-us/library/3eb2b9x8.aspx