Как удалить каждый второй элемент SortedDictionary как можно быстрее?

Мне нужно как можно быстрее удалить каждый второй элемент из SortedDictionary. Словарь ( SortedDictionary > ) может содержать до 20 000 элементов. Итак, я придумал следующее решение:

try
{
    int loop = 0;
    while (true)
    {
        Routes.Remove(Routes.ElementAt(loop).Key);
        loop++;
    }                
}
catch
{
}

Есть ли более простое / лучшее решение, чем это? Повлияет ли обнаруженное исключение на производительность?

Изменить: Это кажется лучшим решением (см. Комментарий ниже):

SortedDictionary<string, List<string>> resizedRoutes = new SortedDictionary<string, List<string>>();
bool b = true;
foreach(KeyValuePair<string, List<string>> route in Routes)
{                                        
    if(b)
    {
        resizedRoutes.Add(route.Key, route.Value);
        b = false;
    }
    else
    {
        b = true;
    }
}
Routes = resizedRoutes;

Пожалуйста, отредактируйте / прокомментируйте, если у вас есть лучшее решение. Спасибо.

5
задан Mike 7 July 2011 в 01:59
поделиться