Это ответвление this question. Рассмотрим данные таким образом:Удаление строк из Словаря на основе следующей или последней строки
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
Эти данные собираются в SortedDictionary
с датами в качестве ключей. Я хотел бы, чтобы преобразовать его в этот формат:
1/1/2000 10000
10/1/2003 11000
6/1/2006 10000
9/1/2006 12000
То есть, я хочу самый ранний датированный элемент для любого данного уникального значения. Обычно, когда я представил с такого рода проблемой, я бы итерацию назад ...
for i = items.count - 1 to 1 step -1
if item(i) is like item(i-1) remove item(i)
next
Но как сделать это с SortedDictionary
? Linq предоставляет обратный счетчик и индекс-иш, но Linq доступен только в Windows. Есть ли простой способ сделать это в базовом VB.net, с которым я не знаком?
Я решил это, сделав List(Of Date)
, итерации назад, затем удаляя записи из List
. Затем я перебираю результат и удаляю любой ключ из SortedDictionary
. Но это серьезно уродливое и много других строк, чем хотелось бы.
являются значения монотонно возрастает по дате? –