Страницы

Поиск по вопросам

вторник, 30 октября 2018 г.

Операция симетричная разность для двух списков

Есть операция дизъюнкции, т.е. объединения. Я хочу из двух списков взять только уникальные значения, но несовсем понятно как это сделать. Посмотрел Except, Intersect - это не то.
Вот для наглядности
List lst1 = new List(){"1","2","3"}; List lst2 = new List(){"1","2","4"};
//var lstRez = {"3","4"}; Вот что должно получиться в итоге, т.е. символ 4 здесь уникален в обоих списках
Вот как выглядит операция объединения графически


Ответ

Симметрическая разность множеств - это объединение разностей двух множеств, соответственно можно сделать так:
List lst1 = new List(){"1","2","3"}; List lst2 = new List(){"1","2","4"}; List result = lst1.Except(lst2).Union(lst2.Except(lst1)).ToList();
А также у интерфейса ISet есть метод:
void SymmetricExceptWith(IEnumerable other)

Комментариев нет:

Отправить комментарий