как очистить список до какого-то пункта?C # - PullRequest
5 голосов
/ 16 июня 2011

у меня есть List<sting> с 5 записями. [0],[1],[2],[3],[4].

если я использую List.Clear(), все элементы будут удалены.

Мне нужно удалить до определенного элемента, например, до [1]. это означает, что в моем списке просто 2 items [0] and [1]. как это сделать с C #?

Ответы [ 5 ]

8 голосов
/ 16 июня 2011

Если хотите удалить все элементы после index 1 (то есть сохранить только первые два элемента):

if (yourList.Count > 2)
    yourList.RemoveRange(2, yourList.Count - 2);

Если вам нужно удалить все элементы после элемента со значением , равным «[1]», независимо от его индекса:

int index = yourList.FindIndex(x => x == "[1]");
if (index >= 0)
    yourList.RemoveRange(index + 1, yourList.Count - index - 1);
4 голосов
/ 16 июня 2011

Вы можете использовать метод GetRange .

Итак.

myList = myList.GetRange (0,2);

.. даст вам то, о чем вы просили выше.

1 голос
/ 16 июня 2011

Вы можете использовать List.RemoveWhere (Predicate). В качестве альтернативы, вы можете сделать цикл for - цикл назад, удаляя элементы до нужного вам элемента, т.е.

for(var i = List.Count()-1; i>=0; i--) {
   var item = List[i];
   if (item != "itemThatYourLookingFor") {
      List.Remove(item);
      continue;
   }
   break;
}
0 голосов
/ 16 июня 2011

Вы можете удалить диапазон из списка, указав начальный индекс и количество удаляемых элементов.

var items = new List<string> {"0", "1", "2", "3", "4", "5"};
var index = items.IndexOf("1") + 1;

if (index >= 0)
{
    items.RemoveRange(index, items.Count - index);
}
0 голосов
/ 16 июня 2011
List<string> strings = new List<string>{"a", "b", "c", "d", "e"};
List<string> firstTwoStrings = strings.Take(2).ToList();
// firstTwoStrings  contains {"a", "b"}

Метод Take(int count) оставит вас с количеством предметов.

...