假设我有这样的LINQ查询:
var authors = from x in authorsList
where x.firstname == "Bob"
select x;
假设authorsList的类型是List<Author>,我如何从authorsList中删除查询返回的Author元素?
或者,换句话说,我如何从authorsList中删除所有与Bob相同的firstname ?
注意:这是一个简化的例子,以方便提问。
嗯,从一开始就把他们排除在外会更容易:
authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();
但是,这只会改变authorsList的值,而不是从以前的集合中删除author。或者,你可以使用RemoveAll:
authorsList.RemoveAll(x => x.FirstName == "Bob");
如果你真的需要基于另一个集合来做,我会使用HashSet, RemoveAll和Contains:
var setToRemove = new HashSet<Author>(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));