2016-12-20 5 views
2

Ich versuche, Elemente aus einer Liste mit Tupeln zu entfernen, wobei das Datum des ersten Tupelelements vor dem heutigen Datum liegt.So entfernen Sie ein Element aus List <Tuple <DateTime, string >>

Hier ist mein Code:

List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>(); 

Vorzugsweise mit Linq.

Ich fülle die Liste wie folgt aus:

Events.Add(new Tuple<DateTime, string>(date, stringtext)); 

So alle Elemente in der Liste, wo das Datum vor dem 20. Dezember ist 2016. entfernt werden sollte. Das zweite Tupel (die Zeichenfolge) spielt keine Rolle.

+0

Möchten Sie die früheren Elemente wirklich entfernen oder nur eine Aufzählung der Elemente nach dem 20. Dezember 2016 erstellen? Weil Sie natürlich nicht nur linq benutzen können, um sie zu entfernen, das würde die Liste beim Aufzählen verändern, was schlecht wäre. Sie könnten linq und '.ToList()' verwenden, um eine Liste derjenigen nach dem 20.12.2016 zu erstellen und dann die neue Liste der Variablen 'Events' zuzuweisen. –

Antwort

4
List<Tuple<DateTime, string>> events = new List<Tuple<DateTime, string>>(); 

DateTime date = new DateTime(2016, 12, 20); 

events = events.Where(x => x.Item1 > date).ToList(); 

Dies wird in Ihren Veranstaltungen die Artikel, die Datum größer als 20.12.2016 haben.

+0

Danke, genau das, was ich brauche –

+0

@KevinTinnemans können Sie die Antwort als richtig markieren, wenn Ihnen geholfen – mybirthname

+1

ja, ich muss 15 Minuten warten nach dem Stellen der Frage –

4

Wenn Sie wirklich diejenigen, die aus der bestehenden Liste, (nicht durch die Schaffung neue Liste als die andere Lösung, sagte) hier müssen löschen ist der Code:

List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>(); 
DateTime date = new DateTime(2016, 12, 20); 
Events.RemoveAll(x => x.Item1 < date); 
+1

Das ist ein besserer Ansatz (keine zusätzlichen Sammlungen erstellt werden) –

0

Dies verwendet Linq und .ToList() eine Liste zu erstellen diejenigen am oder nach dem 20. Dezember 2016 und weist dann die neue Liste der Variablen events zu.

events = events.Where(e=>e.Item1 >= new DateTime(2016, 12, 20)).ToList(); 
Verwandte Themen