从另一个List <>中删除List <>中包含的对象?

And*_*ite 2 c# linq list

我有一个包含在List <>中的对象,我需要从另一个List <>中删除它们

例如

List<MyObject> AllElements = new List<MyObject>();
List<MyObject> SearchResults = new List<MyObject>();
Run Code Online (Sandbox Code Playgroud)

...执行某些操作,以便SearchResults包含AllResults中包含的对象的子集

目前我这样做是为了从主列表中删除它们:

for(int i = 0; i < SearchResults.Count; i++) 
    AllElements.Remove(SearchResults[i]); 
Run Code Online (Sandbox Code Playgroud)

有没有更好的[linqier!]方式?

Nak*_*nch 8

您可以使用Enumerable.Except方法(来自MSDN)

List <MyObject>FilteredElements = AllElements.Except(SearchResults).ToList();


Jus*_*ner 5

IEnumerable<T>.Except 是你的朋友(如果我正确地阅读你的例子):

allElements = allElements.Except(searchResults);
Run Code Online (Sandbox Code Playgroud)