Ich habe eine Liste von Elementen, aber wenn die Anzahl der Listenelemente größer als 4 ist, möchte ich alle Elemente entfernen, aber die ersten 4 nur in der Liste lassen.
Beispiel:
Liste & lt; & gt; - 1, 2, 3, 4, 5, 6, 7, 8
Die neue Liste sollte - 1,2,3,4
lautenIch betrachte List.RemoveAll (), bin mir aber nicht sicher, was ich in die Klammern setzen soll
Ich freue mich auf etwas Hilfe ....
Steven
Warum nicht List.RemoveRange
:
(Das setzt voraus, dass Sie die vorhandene Liste mutieren möchten. Wenn Sie eine neue Sequenz erstellen möchten, verwende ich definitiv list.Take(4)
gemäß Adams Vorschlag, mit oder ohne ToList
Call. Heutzutage tendiere ich dazu, Abfragen zu erstellen, statt bestehende Sammlungen zu mutieren.)
Alternativ können Sie eine neue Liste mit Elementen aus dem alten erstellen:
%Vor%Dies erstellt jedoch eine neue Liste, also ist nicht genauso wie das Entfernen aus der ursprünglichen Liste.
Oder wenn Sie nur iterieren müssen, einfach Take
ohne ToList
in foreach
:
Sie erhalten dann eine verzögerte Ausführung und verbrauchen keinen Speicher beim Erstellen von Listen.
Nur als Nebenbemerkung, mit linq und linq Erweiterungen finde ich den Code deklariert Ihre Absicht expliziter: list.Take(4)
liest viel einfacher als list.RemoveRange(4, list.Count - 4);
auf einen Blick. Absicht in Code ist sehr wichtig für die Wartung und das Arbeiten in Teams.
Dies nimmt die ersten 4 Elemente Ihrer Liste und weist eine neue Liste anstelle Ihrer alten Liste zu.
Sie müssen die Länge nicht wie in anderen Antworten überprüfen, da "Aufzählung zählen und Elemente rendert, bis Anzahl Elemente zurückgegeben wurden oder Quelle keine Elemente mehr enthält." Höflichkeit Adam Houldsworth