2016-12-25 4 views
2

Недавно меня заинтересовала функция List.GetRange(). Он может получить список из более крупного списка. Использование требует два аргумента:Получить все оставшиеся предметы с помощью GetRange

List<T> SubList = List<T>.GetRange(10, 20) //Get 20 items, starting from index 10 

Но что, если я хотел взять каждый оставшийся элемент из определенного индекса, с помощью этой функции?

List<T> RemainingItemsFromList = MyList.GetRange(7, /*REST*/) //What can I insert into REST to make it retrieve everything? 

Есть

  • Любой встроенный RestOfTheList заявление, не делая что-то вроде Length - Index?
  • Любая функция замены (которая уже существует)?
  • Любая другая альтернатива?

или я просто делаю что-то не так?

+0

'list.Count - start', например 'MyList.Count - 7' –

+0

Вы можете использовать LINQ's Skip (7) .ToList(), но это будет немного менее эффективно. – Evk

+0

@ IvanStoev Я указал в вопросе, что я не хочу делать 'Length - Index'. – devRicher

ответ

1

Поскольку List не предоставляет встроенный метод с требуемой функциональностью, ваши варианты: метод

1) Создать расширение себя:

public static class ListExtensions { 
    public static List<T> GetRange<T>(this List<T> list, int start) { 
     return list.GetRange(start, list.Count - start); 
    } 
} 

var remaining = list.GetRange(7); 

2) Использование LINQ:

var remaining = list.Skip(7).ToList(); // a bit less efficient, but usually that does not matter 
Смежные вопросы