删除List<>中包含的对象来自另一个列表<>?

时间:2010-08-18 18:37:50

标签: c# linq list

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

e.g。

List<MyObject> AllElements = new List<MyObject>();
List<MyObject> SearchResults = new List<MyObject>();

...做一些事情,以便SearchResults包含AllResults

中包含的对象的子集

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

for(int i = 0; i < SearchResults.Count; i++) 
    AllElements.Remove(SearchResults[i]); 

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

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

allElements = allElements.Except(searchResults);

答案 2 :(得分:3)

以下内容将为您提供一个“列表”,其中SearchResults中的所有内容均已删除。

var results = AllElements.Where(i => !SearchResults.Contains(i));

然后你可以这样做:

AllElements = results.AsList();