可排序可搜索列表<T>删除全部不起作用



我试图使用lambda表达式从列表中删除某个对象,基于其他列表中的值。下面是我的代码:

List<Client> clientsList = GetSomeList();
SortableSearchableList<Client> clients = new SortableSearchableList<Client>(clientsList);
clients.ToList().RemoveAll(x=> lstPostalCodes.Any(c => c.City.PostalCode == x.PostalCode && c.SubId == x.SubId));

当我使用RemoveAll方法时,表明删除了一定数量的项目,但实际上没有。

您正在创建一个新列表,使用clients中的项目填充它,然后您将遍历新列表中的项目并删除符合条件的项目,然后您将新列表丢弃在地板上并且再也不会使用它。您没有将其存储在任何地方,也没有以任何方式使其为以后的代码所接受。

如果您希望更改clients中的项,则需要从该集合中删除项,而不是创建新集合并从新集合中删除项。

我是这样解决的:

List<Client> clientsList = GetSomeList();
clientsLists.RemoveAll(x=> lstPostalCodes.Any(c => c.City.PostalCode == x.PostalCode && c.SubId == x.SubId));
SortableSearchableList<Client> clients = new SortableSearchableList<Client>(clientsList);

在创建SortableSearchableList之前从列表中删除项目

最新更新