使用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