我有一个包含在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!]方式?
答案 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();