Habe ich eine Liste der Elemente, jedoch, wenn die Anzahl der Listenelemente größer als 4 möchte ich entfernen Sie alle Elemente, aber lassen Sie die ersten 4 in der Liste.
Beispiel:
Liste<> - 1, 2, 3, 4, 5, 6, 7, 8
Die neue Liste sein sollte - 1,2,3,4
Ich bin auf der Suche mit Liste.RemoveAll (), aber nicht sicher, was in den Klammern
Freuen uns auf etwas Hilfe ....
Steven
Warum nicht
Liste.RemoveRange
:(Das ist vorausgesetzt, Sie wollen mutieren die bereits vorhandenen Liste. Wenn Sie zufrieden sind, erstellen Sie eine neue Sequenz, würde ich auf jeden Fall verwenden
list.Take(4)
als pro Adam ' s Vorschlag, mit oder ohneToList
nennen. Diese Tage, die ich neigen dazu, Abfragen erstellen, anstatt mutiert vorhandenen Sammlungen.)Alternativ können Sie eine neue Liste erstellen mit Elementen aus der alten:
Dies schafft eine neue Liste, aber so ist nicht die gleiche wie die Entfernung von der ursprünglichen Liste.
Oder wenn alles, was Sie tun müssen, ist Durchlaufen, einfach
Take
ohneToList
innerhalb einerforeach
:Erhalten Sie dann die verzögerte Ausführung und nicht ausgeben, Speicher auf das erstellen von Listen.
Nur als Randnotiz, mit linq und linq-Erweiterungen finde ich den code erklärt Ihre Absicht mehr explizit:
list.Take(4)
liest sich viel einfacher alslist.RemoveRange(4, list.Count - 4);
auf einen Blick. Absicht im code ist sehr wichtig für die Wartung und die Arbeit in teams.Versuchen, diese
Verwenden Nehmen von LINQ.
Dieser nimmt den ersten 4 Elemente der Liste und weist eine neue Liste, in die Stelle der alten Liste.
Keine Notwendigkeit, überprüfen Sie die Länge wie in den anderen Antworten, weil "Nehmen Sie listet Quelle und Erträge Elemente, bis die Zählung der Elemente gewesen, der nachgegeben wird, oder die Quelle enthält keine weiteren Elemente mehr." mit freundlicher Genehmigung Adam Houldsworth