c# - 从列表中删除字段等于某些项目字段的项目
问题描述
这是我的代码:
public class Person
{
public int age;
public int grade;
public string name;
}
List<Person> _list = new List<Person>();
// .... add lots of items
var personToRemove = new Person {age = 99, grade = 7, };
如何编写一个从_list
所有人中删除具有相同值age
和grade
值的命令personToRemove
。
解决方案
您必须使用.RemoveAll()
with 谓词来删除人员personToRemove
对象中具有匹配详细信息的所有人员。
所以你的查询将是。
int totalRemoved = _list.RemoveAll(x => x.age == personToRemove.age && x.grade == personToRemove.grade);
输入:
_list.Add(new Person { age = 99, grade = 7 });
_list.Add(new Person { age = 87, grade = 7 });
_list.Add(new Person { age = 57, grade = 8 });
输出:
编辑:
您还可以使用传统的循环以优雅的方式从人员列表中删除匹配人员。
for (int i = _list.Count - 1; i >= 0; i--)
{
if (_list[i].age == personToRemove.age && _list[i].grade == personToRemove.grade)
{
_list.RemoveAt(i);
break;
}
}
推荐阅读
- django - 如何从 Django(postgreSQL 数据库)进行 groupby 查询
- bash - Bash,杀死 tmux 进程后服务器意外退出
- javascript - 谁能解释以下 javascript 问题的输出?
- javascript - 如何在创建新项目时自动填充表格字段并更新现有项目
- java - SonarLint,字符串数组:用“var”声明这个局部变量而不是=错误
- c++ - 如何在 C/C++ 的源代码中获取浮点文字的位置?
- c++ - 点云库 (PCL):仅提取曲面的顶点
- react-native - 我不断收到错误移动到新页面
- c++ - 为什么 if 语句的内部不能完全工作?
- mysql - MySQL 表名 - 小写或大写