Linq 基于另一个列表从列表中删除项目

Linq 基于另一个列表从列表中删除项目,linq,list,c#-4.0,Linq,List,C# 4.0,我有两个SelectListItem类型的列表。 我正在尝试删除另一个列表中存在的列表中的项目。 我尝试了所有类型的代码,但没有成功,请帮助我 我试过的代码是: Channels=New List<SelectListItem>(); RequestedChannels=New List<SelectListItem>(); Channels = GetChannelList(); RequestedChannels = GetChannelList(UserID, Co

我有两个SelectListItem类型的列表。 我正在尝试删除另一个列表中存在的列表中的项目。 我尝试了所有类型的代码,但没有成功,请帮助我 我试过的代码是:

Channels=New List<SelectListItem>();
RequestedChannels=New List<SelectListItem>();
Channels = GetChannelList();
RequestedChannels = GetChannelList(UserID, ControlChannels);
第2例

Channels = Channels.Where(item => !RequestedChannels.Contains(item)).ToList();
第3例

foreach (SelectListItem item in RequestedChannels)
                Channels.Remove(item);
但这些案例并不奏效。 请帮忙。 感谢和问候,
Suraj

您需要为Except和Contains方法重写Equals和GetHashCode

要比较自定义数据类型,请实现IEquatable(Of T)泛型 接口,并为 类型。默认相等比较器default用于比较 实现IEquatable(of T)的类型的值


有关详细信息,请参见

您需要为Except和Contains方法重写Equals和GetHashCode

要比较自定义数据类型,请实现IEquatable(Of T)泛型 接口,并为 类型。默认相等比较器default用于比较 实现IEquatable(of T)的类型的值

有关详细信息,请参阅

foreach (SelectListItem item in RequestedChannels)
                Channels.Remove(item);