Frage

Ich habe List<sting> mit 5 Einträgen.[0],[1],[2],[3],[4].

Wenn ich List.Clear() verwende, werden alle Elemente entfernt.

Ich muss bis zu einem bestimmten Gegenstand entfernen, zum Beispiel bis [1].Das heißt, in meiner Liste sind nur 2 items [0] and [1].Wie geht das mit c #?

War es hilfreich?

Lösung

Sie können List.RemoveWhere (Prädikat) verwenden. Alternativ können Sie eine for-Schleife rückwärts ausführen und Elemente entfernen, bis das gewünschte Element angezeigt wird, z. B.

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

Andere Tipps

Wenn Sie alle Elemente nach index 1 entfernen möchten (dh nur die ersten beiden Elemente beibehalten möchten):

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

Wenn Sie alle Elemente nach dem Element mit einem -Wert von "[1]" entfernen müssen, unabhängig von seinem Index:

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

Sie können die GetRange-Methode verwenden.

Also ..

myList= myList.GetRange (0,2);

.. würde Ihnen geben, was Sie oben verlangen.

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

Mit der Take(int count) -Methode können Sie Elemente zählen.

Sie können einen Bereich aus einer Liste entfernen und den Start angebenIndex und die Anzahl der zu entfernenden Elemente.

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);
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top