Question

j'ai List<sting> avec 5 entrées. [0],[1],[2],[3],[4].

Si j'utilise List.Clear() Tous les éléments sont supprimés.

J'ai besoin de supprimer jusqu'à l'élément spécifique, par exemple jusqu'à [1]. Cela signifie que dans ma liste est juste 2 items [0] and [1]. Comment faire cela avec C #?

Était-ce utile?

La solution

Vous pouvez utiliser la liste.removewhere (prédicat) .. Alternativement, vous pouvez faire une boucle pour faire boucle

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

Autres conseils

Si vous souhaitez supprimer tous les articles après indice 1 (c'est-à-dire, conservez uniquement les deux premiers éléments):

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

Si vous devez supprimer tous les éléments après l'article avec un évaluer de [1], quel que soit son indice:

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

Vous pouvez utiliser La méthode GetRange.

Alors..

myList = myList.getRange (0,2);

.. allait vous donner ce que vous demandez ci-dessus.

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

La Take(int count) La méthode vous laissera des éléments de comptage.

Tu peux supprimer une plage à partir d'une liste, donnant l'index de départ et le nombre d'éléments à supprimer.

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top