Подтвердить что ты не робот

Как получить элементы в определенном диапазоне (3 - 7) из списка?

Каким будет наиболее эффективный способ выбрать все элементы в определенном диапазоне из списка и поместить его в новый?

List<DataClass> xmlList = new List<DataClass>();

Это мой список, и я хотел бы поместить все элементы DataClass между диапазоном (3-7) в новый список.

Что было бы самым эффективным способом? Цикл foreach, который имеет значение count ++ каждый раз, пока он не достигнет элементов между диапазоном и не добавит эти элементы в новый список?

4b9b3361

Ответ 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