从列表项中删除字段等于某些项字段的项
Remove from list items that have fields equal to some item fields
这是我的代码:
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
所有人中删除与 personToRemove
具有相同 age
和 grade
值的人。
您必须将 .RemoveAll()
与谓词一起使用才能删除 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;
}
}
可以使用where方法过滤出结果
List <Person> _list = new List <Person> ();
// .... add lots of items
var personToRemove = new Person {
age = 99, grade = 7,
};
_list.Add(new Person {
age = 99, grade = 7
});
_list.Add(new Person {
age = 99, grade = 7
});
_list.Add(new Person {
age = 99, grade = 8
});
_list.Add(new Person {
age = 100, grade = 8
});
var result = _list.Where(a => a.age != personToRemove.age || a.grade != personToRemove.grade);
因为您在寻找其他方式而没有 list.RemoveAll。你可以使用list.Except方法
List<Person> _list = new List<Person>();
// get the list of Person you want to remove by using where.
List<Person> _Removelist = _list.Where(x => x.age == personToRemove.age && x.grade == personToRemove.grade).ToList();
List<Person> _finalList = _list.Except(_Removelist ).ToList();
这是我的代码:
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
所有人中删除与 personToRemove
具有相同 age
和 grade
值的人。
您必须将 .RemoveAll()
与谓词一起使用才能删除 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;
}
}
可以使用where方法过滤出结果
List <Person> _list = new List <Person> ();
// .... add lots of items
var personToRemove = new Person {
age = 99, grade = 7,
};
_list.Add(new Person {
age = 99, grade = 7
});
_list.Add(new Person {
age = 99, grade = 7
});
_list.Add(new Person {
age = 99, grade = 8
});
_list.Add(new Person {
age = 100, grade = 8
});
var result = _list.Where(a => a.age != personToRemove.age || a.grade != personToRemove.grade);
因为您在寻找其他方式而没有 list.RemoveAll。你可以使用list.Except方法
List<Person> _list = new List<Person>();
// get the list of Person you want to remove by using where.
List<Person> _Removelist = _list.Where(x => x.age == personToRemove.age && x.grade == personToRemove.grade).ToList();
List<Person> _finalList = _list.Except(_Removelist ).ToList();