Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение IEnumerable / 7 сообщений из 7, страница 1 из 1
30.04.2015, 11:29
    #38949464
sanekoffice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
К примеру есть два IEnumerable. Каждый заполнен классами. Заполняются они из разных источников. Есть необходимость сравнить их по значению.

Как я понял, простые операнды типа (!= или Equals) будут сравнивать ссылку. Это не то что мне надо. Я хочу увидеть список классов одного перечесления которые не имеют аналогии в другом.
...
Рейтинг: 0 / 0
30.04.2015, 11:40
    #38949487
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
sanekoffice,

(!= или Equals) можно переопределить так как тебе нужно
...
Рейтинг: 0 / 0
30.04.2015, 11:41
    #38949488
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
sanekoffice,

кроме того можно использовать для сравнения свой comparer
...
Рейтинг: 0 / 0
30.04.2015, 11:49
    #38949507
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
Как выше было сказано, переопределение Equals и GetHashCode, и Enumerable.Except(TSource) , либо вторая перегрузка Except с IEqualityComparer<TSource>
...
Рейтинг: 0 / 0
30.04.2015, 11:51
    #38949509
sanekoffice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
Ну я примерно на это и расчитывал...
Спасибо
...
Рейтинг: 0 / 0
30.04.2015, 11:57
    #38949512
sanekoffice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
Сон Веры ПавловныКак выше было сказано, переопределение Equals и GetHashCode, и Enumerable.Except(TSource) , либо вторая перегрузка Except с IEqualityComparer<TSource>

Ну, Понятно что Equal можно переопределить как сравнение всех простых типов внутри. Потом пробегаться foreach и ловить Any().

А как с помощью Except Получить уникальную запись? То есть ID = 3

Код: c#
1.
2.
3.
4.
5.
6.
List<Defect> l1 = new List<Defect>();
l1.Add(new Defect {Id = 1, ItemAction = Vmzko.ItemAction.Removed, Name = "1"});

List<Defect> l2 = new List<Defect>();
l1.Add(new Defect { Id = 3, ItemAction = Vmzko.ItemAction.Undefined, Name = "3" });
l1.Add(new Defect { Id = 1, ItemAction = Vmzko.ItemAction.Removed, Name = "1" });
...
Рейтинг: 0 / 0
30.04.2015, 12:03
    #38949519
sanekoffice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение IEnumerable
Разобрался. Тема закрыта
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сравнение IEnumerable / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]