Ответ 1
Если я правильно понял ваши требования, это должно работать:
L1.AddRange(L2.Except(L1));
L1.RemoveAll(item => !L2.Contains(item));
Не однострочный, но достаточно близко...
У меня есть два списка (L1, L2) объекта A, L1 используется для хранения списка объектов (от многих до многих отношений) до их изменения. L2 - это соотношение после его изменения. Мне нужно сохранить общие элементы, но добавить новые и удалить те, которые не находятся в L2. Мне было интересно, есть ли один liner, который я мог бы использовать с LINQ, чтобы выполнить это. Если вам нужна дополнительная информация, просто дайте мне знать.
Заранее спасибо
Если я правильно понял ваши требования, это должно работать:
L1.AddRange(L2.Except(L1));
L1.RemoveAll(item => !L2.Contains(item));
Не однострочный, но достаточно близко...
попробуйте что-то вроде этого
var a = from ele in list1
let alleles = list1.Union(list2)
let deleles = alleles.Except(list1)
let neweles = alleles.Except(list2)
select new { DeletedEles = deleles, NewEles = neweles };
Возможно, логические операторы Linq, такие как Intersect(), могут вам помочь?