2016-05-02 4 views
3

У меня есть Dictionary, который хранит элементы Skilodge, и мне нужен метод для удаления всех членов. На данный момент, похоже, это только удаление. Вот метод, который я попробовал:Удаление всех записей в словаре C# WPF

public void DeleteAll() 
{ 
    for (int i = 0; i < Skiers.Count; i = i + 1) 
    { 
     string iString = i.ToString(); 
     Skiers.Remove(iString); 
    } 
} 
+4

Try 'Skiers.Clear()' – vendettamit

+0

http://stackoverflow.com/questions/1978821/how-to-reset-a-dictionary – Sajeetharan

+0

Другого дали вы отвечаете, bu t, если ваши ключи к вашему словарю являются целыми целыми целыми числами (что предлагает ваш код), вам совсем не нужен словарь. Вам нужен список. –

ответ

6

использование Clear проверка метода этого link

Skiers.Clear() 
+0

Прекрасное спасибо! Не удается принять в течение 10 минут, но я сделаю – lucycopp

+0

Метод Clear() быстрее, чем обычный метод циклирования ... –

4

Вы можете использовать Skiers.Clear(); для удаления всех существующих значений данного словаря, и вы можете использовать Skiers= new Dictionary<T,T>(), чтобы получить свежую Словарь (новый экземпляр);

Dictionary.Clear Method() Удаляет все ключи и значения из Словаря.

Вы можете попробовать Условный Remove также, Пусть словарь может определить и инициализируется как следующий:

Dictionary<string, String> dictSample = new Dictionary<string, string>(); 
dictSample.Add("a", "value 1"); 
dictSample.Add("b", "value 1"); 
dictSample.Add("c", "value 12"); 
dictSample.Add("d", "value 10"); 
dictSample.Add("e", "value 1"); 

И было требование удаления некоторых конкретных вопросов те, имеющие value 1 в своей стоимости части, то вы можете использовать следующий код для удаления их:

var removable = dictSample.Where(x => x.Value == "value 1").Select(x => x.Key).ToList();; 
foreach (var dictItem in removable) 
{ 
    dictSample.Remove(dictItem); 
} 
+0

условное удаление может вызвать исключение, поскольку вы удаляете элемент коллекции, которую вы итерируете. попробуйте использовать ToArray или ToList перед удалением. – George

+0

@George: Хорошая точка. Спасибо; я обновил –