Ваша проблема в том, что вы меняете один и тот же объект, просто по другой ссылке.вам нужно убедиться, что вы удаляете элементы из другого объекта, который содержит копии той же информации.Есть несколько способов сделать это.Самое простое - просто создать 2 объекта:
var services = DictionaryObject.GetDictionaryValidatedByDate<ServiceInfo>(DictionaryType.REF_SERVICE, DateTime.Now);
var anotherService = DictionaryObject.GetDictionaryValidatedByDate<ServiceInfo>(DictionaryType.REF_SERVICE, DateTime.Now);;
anotherService.RemoveAll(p =>
{
if (p.Model.mainService == false || p.Model.mainService == true)
{
return true;
}
return false;
});
или вы можете скопировать / клонировать ваш объект примерно так:
var anotherService = services.Copy(); //or maybe use a copy constructor here instead:
// var anotherService = new ServiceInfo(sevices);
anotherService.RemoveAll(p =>
{
if (p.Model.mainService == false || p.Model.mainService == true)
{
return true;
}
return false;
});
Когда вы реализуете метод Copy()
или конструктор, которыйберет объект для копирования, вам нужно убедиться, что вы создаете копии словарей, а не просто используете ссылки на один и тот же словарь.
, если возвращаемый объект - просто IDictionary<K,V>
(это не ясно изпредоставленный код) вы можете сделать это:
var anotherService = new Dictionary<KeyType,ValueType>(services)
anotherService.RemoveAll(p =>
{
if (p.Model.mainService == false || p.Model.mainService == true)
{
return true;
}
return false;
});