从绑定列表中删除元素

Raf*_*Mir 9 c# linq wpf bindinglist

在我的一个项目中,我试图从列表中删除id等于给定id的项目.

BindingList<T>有个叫UserList.

列表具有所有方法RemoveAll().

既然我有BindingList<T>,我就这样使用它:

UserList.ToList().RemoveAll(x => x.id == ID )
Run Code Online (Sandbox Code Playgroud)

但是,我的列表包含与以前相同数量的项目.
为什么它不起作用?

vc *_* 74 16

它不起作用,因为您正在处理通过调用创建的列表的副本ToList().

BindingList<T>不支持RemoveAll():它只是一个List<T>功能,所以:

IReadOnlyList<User> usersToRemove = UserList.Where(x => (x.id == ID)).
                                             ToList();

foreach (User user in usersToRemove)
{
    UserList.Remove(user);
}
Run Code Online (Sandbox Code Playgroud)

我们在ToList()这里打电话是因为否则我们会在修改它时枚举一个集合.