C # - Liste - entferne alle Elemente, aber NICHT die ersten vier

7

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

lauten

Ich betrachte List.RemoveAll (), bin mir aber nicht sicher, was ich in die Klammern setzen soll

Ich freue mich auf etwas Hilfe ....

Steven

    
swade1987 10.05.2012, 09:38
quelle

4 Antworten

15

Warum nicht List.RemoveRange :

verwenden %Vor%

(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.)

    
Jon Skeet 10.05.2012, 09:40
quelle
9

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 :

%Vor%

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.

    
Adam Houldsworth 10.05.2012 09:40
quelle
0

Versuchen Sie es

%Vor%     
Paras 10.05.2012 09:50
quelle
0

Verwenden Sie von LINQ.

%Vor%

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

    
Nikhil Agrawal 10.05.2012 09:46
quelle

Tags und Links