Мне нужно как можно быстрее удалить каждый второй элемент из 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;
Пожалуйста, отредактируйте / прокомментируйте, если у вас есть лучшее решение. Спасибо.