Как усечь список?
Какой самый простой способ удалить каждый элемент после и включив n-й элемент в System.Collections.Generic.List<T>
?
Ответы
Ответ 1
Если вы можете использовать метод RemoveRange
, просто выполните:
list.RemoveRange(index, count);
Где указатель, откуда начать и считать, сколько нужно удалить. Таким образом, чтобы удалить все из определенного индекса в конец, код будет выглядеть следующим образом:
list.RemoveRange(index, list.Count - index);
И наоборот, вы можете использовать:
list.GetRange(index, count);
Но это создаст новый список, который может быть не таким, каким вы хотите.
Ответ 2
sans LINQ quicky...
while (myList.Count>countIWant)
myList.RemoveAt(myList.Count-1);
Ответ 3
list.Take(n);
Ответ 4
Если LINQ не является опцией, вы можете прокручивать список назад:
for(int i = list.Count - 1; i >= index; i--)
{
list.RemoveAt(i);
}
Ответ 5
Вот пример приложения, чтобы сделать это
static void Main(string[] args)
{
List<int> lint = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine("List Elements");
lint.ForEach(delegate(int i) { Console.WriteLine(i); });
lint.RemoveRange(8, lint.Count - 8);
Console.WriteLine("List Elements after removal");
lint.ForEach(delegate(int i) { Console.WriteLine(i); });
Console.Read();
}