从 List<T> where 条件中删除项目

hi *_*sme -2 c# linq

我得到了List<Person> listA -> 哪里Person

string name
int age
List<string> jobs
Run Code Online (Sandbox Code Playgroud)

我需要jobs.count() < 1使用 linq 从 listA 中删除所有项目,有什么想法吗?

Joh*_*lay 5

您不应该使用 LINQ 改变列表,因为它是为查询而设计的,但是,它的协议中List<T>已经有一个方法:RemoveAll

listA.RemoveAll(person => person.Jobs.Count < 1);
Run Code Online (Sandbox Code Playgroud)

RemoveAll接受一个Predicate<T>委托,当要删除某个项目时,该委托应返回 true。

但是,如果您打算创建一个仅包含从事少于一项工作的人员的新列表,则可以使用 LINQ:

var newList = listA
    .Where(person => person.Jobs.Count < 1)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

  • @XouDo这完全取决于OP是否想要更新现有列表。 (2认同)