我有两个对象A的列表(L1和L2),L1用于保存在它们被更改之前的对象列表(多对多关系)。L2是更改后的关系。我需要保留共同的元素,但添加新的元素并删除不在L2中的元素。我想知道是否有一条LINQ语句可以完成这个操作。如果您需要更多信息,请让我知道。
提前感谢
我有两个对象A的列表(L1和L2),L1用于保存在它们被更改之前的对象列表(多对多关系)。L2是更改后的关系。我需要保留共同的元素,但添加新的元素并删除不在L2中的元素。我想知道是否有一条LINQ语句可以完成这个操作。如果您需要更多信息,请让我知道。
提前感谢
如果我正确理解您的要求,那么这个应该有效:
L1.AddRange(L2.Except(L1));
L1.RemoveAll(item => !L2.Contains(item));
不是一行代码,但足够接近了...
或许 Linq 的布尔运算符,如 Intersect(),可以对您有所帮助?
尝试像这样做
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 };