使用LINQ从列表中删除元素

假设我有LINQ查询,例如:

var authors = from x in authorsList

where x.firstname == "Bob"

select x;

给定authorsList类型List<Author>,如何删除查询返回的Author元素?authorsList``authors

或者,换一种说法,我如何从中删除所有等价的Bob authorsList

注意:这是出于问题目的的简化示例。

回答:

好吧,首先将它们排除会更容易:

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

但是,这只会更改的值,authorsList而不是从先前的集合中删除作者。另外,您可以使用RemoveAll

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

如果您确实需要根据其他集合进行操作,则可以使用HashSet,RemoveAll和Contains:

var setToRemove = new HashSet<Author>(authors);

authorsList.RemoveAll(x => setToRemove.Contains(x));

以上是 使用LINQ从列表中删除元素 的全部内容, 来源链接: utcz.com/qa/408160.html

回到顶部