Удалить элементы из списка на основе другого списка - PullRequest
1 голос
/ 17 октября 2011

У меня есть два списка типа SelectListItem.Я пытаюсь удалить элементы в списке, который существует в другом списке.Я перепробовал все типы кодов, но напрасно, пожалуйста, помогите мне Коды, которые я пробовал:

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

1-й случай

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

2-й случай

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

3-йcase

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

Но эти случаи не работают.Пожалуйста помоги.С наилучшими пожеланиями, Сурадж

1 Ответ

4 голосов
/ 17 октября 2011

Для работы методов Except и Contains необходимо переопределить методы Equals и GetHashCode

Для сравнения пользовательских типов данных реализуйте универсальный интерфейс IEquatable (Of T) и предоставьте свои собственные методы GetHashCode и Equalsдля типа.Средство сравнения по умолчанию, Default, используется для сравнения значений типов, которые реализуют IEquatable (Of T).

Подробнее см. Enumerable.Except

...