显示从列表中删除的值

Displaying values that were removed from list

您好,我目前正在从列表中删除元素:

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

我想看看实际删除了什么,这样我就可以将它与 versionList 进行比较,看看为什么没有删除所有值。我知道这一点,因为版本列表是 canadidateList 的子列表,并且在 removeall 之后数学不加起来。

在 RemoveAll 之前做:

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));

没有内置方法可以查看从列表中删除了哪些项目。

如果您需要它进行调试 - 一种简单的方法是在调用 .RemoveAll 之前使用具有相同条件的 .Where(...).ToList() 并检查结果。

如果您在 运行 时需要该信息,请考虑使用 ObservableCollection<T> 而不是常规列表并收听 "removed" 通知。