首页 > 解决方案 > 从列表中删除字段等于某些项目字段的项目

问题描述

这是我的代码:

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所有人中删除具有相同值agegrade值的命令personToRemove

标签: c#listremoveall

解决方案


您必须使用.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;
    }
}

推荐阅读