Dies ist ein Ableger von this question. Betrachten Sie Daten so:Entfernen von Zeilen aus einem Verzeichnis basierend auf der nächsten oder letzten Zeile
1/1/2000 10000
1/1/2001 10000
1/1/2002 10000
10/1/2003 11000
1/1/2004 11000
1/1/2005 11000
6/1/2006 10000
9/1/2006 12000
Diese Daten gesammelt werden in eine SortedDictionary
mit den Daten als Schlüssel. Ich möchte es in dieses Format konvertieren:
1/1/2000 10000
10/1/2003 11000
6/1/2006 10000
9/1/2006 12000
Das heißt, ich möchte das früheste datierte Element für einen bestimmten eindeutigen Wert. Normalerweise, wenn ich mit dieser Art von Problem dargestellt habe, würde ich rückwärts durchlaufen ...
for i = items.count - 1 to 1 step -1
if item(i) is like item(i-1) remove item(i)
next
Aber wie macht man das mit einem SortedDictionary
? Linq bietet einen Reverse-Enumerator und ein Index-ish-Ding, aber Linq ist nur unter Windows verfügbar. Gibt es eine einfache Möglichkeit, dies innerhalb von VB.net zu tun, mit dem ich nicht vertraut bin?
Ich löste dies, indem ich eine List(Of Date)
mache, rückwärts über diese iteriert und dann Einträge aus der List
entfernt. Dann iteriere ich über das Ergebnis und entferne einen beliebigen Schlüssel aus der SortedDictionary
. Aber das ist wirklich hässlich und viel mehr Zeilen, als ich gerne hätte.
Ist die Werte monoton in Bezug auf das Datum zu erhöhen? –