Comment effacer la liste jusqu'à un élément? C #
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 #?
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);
}