我有两个类型为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);
但是这些情况不起作用。 请帮忙。 感谢致敬, 苏拉杰
答案 0 :(得分:4)
您需要覆盖Equals和GetHashCode以使Except和Contains方法起作用
要比较自定义数据类型,请实现IEquatable(Of T)泛型 接口并提供自己的GetHashCode和Equals方法 类型。默认的相等比较器Default用于比较 实现IEquatable(Of T)的类型的值。
有关详细信息,请参阅Enumerable.Except