使用LINQ从List中删除元素

15 浏览
0 Comments

使用LINQ从List中删除元素

假设我有一个 LINQ 查询,如下所示:

var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;

假设 authorsList 是类型为 List 的列表,那么我如何从 authorsList 中删除由查询返回到 authors 中的 Author 元素呢?

或者,换句话说,我如何从 authorsList 中删除所有名为 Bob 的 firstname?

注:这是一个简化的示例,仅用于提问目的。

admin 更改状态以发布 2023年5月24日
0
0 Comments

最好使用List.RemoveAll来完成此操作。

authorsList.RemoveAll((x) => x.firstname == "Bob");

0
0 Comments

首先排除它们会更容易:

authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();

但是这只是改变了 authorsList 的值,而不是从前面的集合中删除作者。或者,您可以使用RemoveAll

authorsList.RemoveAll(x => x.FirstName == "Bob");

如果您确实需要基于另一个集合进行操作,我会使用 HashSet,RemoveAll 和 Contains:

var setToRemove = new HashSet(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));

0