Domanda

ho List<sting> con 5 voci.[0],[1],[2],[3],[4].

se utilizzo List.Clear() tutti gli elementi vengono rimossi.

devo rimuovere fino a un elemento specifico, ad esempio fino a [1].ciò significa che nel mio elenco sono solo 2 items [0] and [1].come farlo con c #?

È stato utile?

Soluzione

Puoi usare List.RemoveWhere (Predicate) .. In alternativa, puoi eseguire un ciclo for all'indietro, rimuovendo gli elementi fino all'elemento che stai cercando, ad esempio

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

Altri suggerimenti

Se desideri rimuovere tutti gli elementi dopo l ' indice 1 (ovvero, conserva solo i primi due elementi):

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

Se devi rimuovere tutti gli elementi dopo l'elemento con un valore "[1]", indipendentemente dal suo indice:

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

Puoi utilizzare il metodo GetRange .

Quindi ..

myList= myList.GetRange (0,2);

.. ti darebbe quello che chiedi sopra.

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

Il metodo Take(int count) ti lascerà con il conteggio degli elementi.

Puoi rimuovere un intervallo da un elenco, dando il valore inizialeindice e il numero di elementi da rimuovere.

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top