Отображение значений, которые были удалены из списка

Здравствуйте, я в настоящее время удаляю элементы из списка, делая это:

candidateList.RemoveAll(x => versionslist.Any(y => y.Name == x.Name && y.Parent.Name == x.Parent.Name));

Я хочу увидеть, что на самом деле удаляется, чтобы я мог сравнить его после с versionList, чтобы понять, почему не все значения удаляются. Я знаю это, потому что список версий является подсписком canadidateList, и после удаления все математические вычисления не складываются.

2 ответа

Решение

Не существует встроенного способа видеть, какие элементы удаляются из списка.

Если вам это нужно для отладки - одним из простых способов будет просто использовать .Where(...).ToList() с тем же условием перед вызовом .RemoveAll и проверить результат.

Если вам нужна эта информация во время выполнения, подумайте об использовании ObservableCollection<T> вместо обычного списка и слушайте "удаленные" уведомления.

Перед тем как удалить все сделаем:

var removedList = candidateList.Where(x => versionslist.Any(y => y.Name == x.Name && y.Parent.Name == x.Parent.Name));

Теперь у вас есть список того, что будет удалено, затем выполните удаление всех:

candidateList.RemoveAll(x => versionslist.Any(y => y.Name == x.Name && y.Parent.Name == x.Parent.Name));
Другие вопросы по тегам