Pergunta

Eu tenho List<sting> com 5 entradas.[0],[1],[2],[3],[4].

se eu usar List.Clear(), todos os itens serão removidos.

Preciso remover até o item específico, por exemplo, até [1].isso significa que na minha lista são apenas 2 items [0] and [1].como fazer isso com c #?

Foi útil?

Solução

Você pode usar List.RemoveWhere (Predicate) .. Alternativamente, você pode fazer um loop for - looping para trás, removendo itens até o item que você está procurando, ou seja,

for(var i = List.Count()-1; i>=0; i--) {
   var item = List[i];
   if (item != "itemThatYourLookingFor") {
      List.Remove(item);
      continue;
   }
   break;
}

Outras dicas

Se quiser remover todos os itens após o índice 1 (ou seja, reter apenas os dois primeiros itens):

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

Se você precisar remover todos os itens após o item com um valor de "[1]", independentemente de seu índice:

int index = yourList.FindIndex(x => x == "[1]");
if (index >= 0)
    yourList.RemoveRange(index + 1, yourList.Count - index - 1);

Você pode usar o método GetRange .

Então ..

myList= myList.GetRange (0,2);

... daria a você o que você está pedindo acima.

List<string> strings = new List<string>{"a", "b", "c", "d", "e"};
List<string> firstTwoStrings = strings.Take(2).ToList();
// firstTwoStrings  contains {"a", "b"}

O método Take(int count) deixará você com itens de contagem.

Você pode remover um intervalo de uma lista, dando oíndice e o número de itens a serem removidos.

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top