#c_sharp #list
Есть операция дизъюнкции, т.е. объединения. Я хочу из двух списков взять только уникальные значения, но несовсем понятно как это сделать. Посмотрел Except, Intersect - это не то. Вот для наглядности Listlst1 = new List (){"1","2","3"}; List lst2 = new List (){"1","2","4"}; //var lstRez = {"3","4"}; Вот что должно получиться в итоге, т.е. символ 4 здесь уникален в обоих списках Вот как выглядит операция объединения графически
Ответы
Ответ 1
Симметрическая разность множеств - это объединение разностей двух множеств, соответственно можно сделать так: Listlst1 = 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) Ответ 2
Ещё один способ - из объединения вычесть пересечение: Listlst1 = new List () { "1", "2", "3" }; List lst2 = new List () { "1", "2", "4" }; var lstRes = lst1.Union(lst2).Except(lst1.Intersect(lst2));
Комментариев нет:
Отправить комментарий