使用LINQ从List中删除元素
使用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日
首先排除它们会更容易:
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));