从另一个IList <>中删除一个IList <>中的项目

Nug*_*ugs 8 c# linq linq-to-entities

很抱歉发布这样的基本问题,我是LINQ的新手,我正试图找出最好的方法来做到这一点IList.

我有2 ILists<>个自定义dto对象.我想从列表中删除另一个中的所有匹配项.

IList<ItemDTO> list1 = itemsbl.GetBestItems();
IList<ItemDTO> list2 = itemsbl.GetWorstItems();
Run Code Online (Sandbox Code Playgroud)

我需要删除所有项目list1list2.我一直在看这个Except()方法,但显然我需要我的ItemsDTO类来覆盖GetHashCodeEquals方法,但我无法找到一些这样的例子.

可能有人请告诉我删除的最佳方式list1list2

再次感谢

Dis*_*ile 9

您可以使用Except方法执行此操作.

var newList = list2.Except(list1).ToList();
Run Code Online (Sandbox Code Playgroud)

如果你想替换list2,那么就这样做:

list2 = list2.Except(list1).ToList();
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

要比较自定义数据类型,请实现IEquatable通用接口,并为该类型提供自己的GetHashCode和Equals方法.默认的相等比较器Default用于比较实现IEquatable的类型的值.