假设我有LINQ查询,例如:
var authors = from x in authorsList where x.firstname == "Bob" select x;
给定authorsList类型List<Author>,如何删除查询返回的Author元素?authorsList``authors
authorsList
List<Author>
Author
authorsList``authors
或者,换一种说法,我如何从中删除所有等价的Bob authorsList?
注意:这是出于问题目的的简化示例。
好吧,首先将它们排除会更容易:
authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();
但是,这只会更改的值,authorsList而不是从先前的集合中删除作者。另外,您可以使用RemoveAll:
RemoveAll
authorsList.RemoveAll(x => x.FirstName == "Bob");
如果您确实需要根据其他集合进行操作,则可以使用HashSet,RemoveAll和Contains:
var setToRemove = new HashSet<Author>(authors); authorsList.RemoveAll(x => setToRemove.Contains(x));