当前位置: 首页 > 编程语言 > C#

从列表中删除项目时遇到问题?Share

时间:2023-04-10 10:50:13 C#

从列表中删除项目时遇到问题?我有两个列表。第一个是所有学生,第二个是选定的学生。我想如果我一次选择学生,他们将从所有学生列表中删除。这是我的代码,但它没有。学生不会被删除。foreach(ListSelectedStudents.ToList()中的varli){if(ListAllStudents.Contains(li)){ListAllStudents.Remove(li);您是否尝试过使用linq:ListAllStudents.RemoveAll(m=>ListSelectedStudents.Contains(m));如果它不起作用,则对象中实现的默认比较可能有问题,您可以修复比较器,或者执行:ListAllStudents.RemoveAll(m=>ListSelectedStudents.Any(n=>n.Id==中));//假设Id是对象的主键...包含将使用相等性来确定什么是“相等”,我在这里假设您的自定义类不提供自定义相等性实现,这意味着默认的相等性将为类型提供,它只使用引用相等性。因此,即使您认为两件事是“相等的”,Contains方法也不会,因此不会进入Remove调用。要使特定代码的行为符合您的需要,请在Student类上提供IEquatable的实现,如IEquatable的备注中所述。在这种情况下,实际上不需要Contains,因为Remove将执行相同的检查。如果没有要删除的内容,则Remove调用将是透明的,实际上什么也不做。因为在我有机会提供信息之前我已经有了IEquatable,Remove也将依赖于IEquatable(docs),所以你仍然需要提供一个实现,但它会让你的代码看起来更干净:foreach(varliinListSelectedStudents.ToList()){ListAllStudents.Remove(li);可能有一些方法可以在不实现接口的情况下执行此操作,但您将无法使用当前代码。我会留下另一个答案,因为今天是星期五,我的大脑还没有运作。试试这个:C#学习教程就这些:从列表中删除项目时遇到问题?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——ListSelectedStudents=ListSelectedStudents.Where(a=>!ListSelectedStudents.Contains(a)).Select(a=>a).ToList();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: