根据其他列表从列表中删除项目

时间:2011-10-17 06:00:44

标签: linq list c#-4.0

我有两个类型为SelectListItem的列表。 我正在尝试删除列表中存在于另一个列表中的项目。 我尝试了所有类型的代码但是徒劳无助请帮助我 我尝试的代码是:

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

第一个案例

Channels = Channels.Except(RequestedChannels).ToList();

第二案

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

第3例

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

但是这些情况不起作用。 请帮忙。 感谢致敬, 苏拉杰

1 个答案:

答案 0 :(得分:4)

您需要覆盖Equals和GetHashCode以使Except和Contains方法起作用

  

要比较自定义数据类型,请实现IEquatable(Of T)泛型   接口并提供自己的GetHashCode和Equals方法   类型。默认的相等比较器Default用于比较   实现IEquatable(Of T)的类型的值。

有关详细信息,请参阅Enumerable.Except