LINQ比较两个列表 - 添加新列表,删除旧列表,保留相同的列表

时间:2010-09-14 17:17:38

标签: c# linq list

我有一个对象A的两个列表(L1,L2),L1用于在更改之前存储对象列表(多对多关系)。 L2是改变后的关系。我需要保留常用元素,但添加新元素并删除不在L2中的元素。我想知道是否有一个内衬我可以用LINQ来完成这个。如果您需要更多信息,请告诉我。

提前致谢

3 个答案:

答案 0 :(得分:17)

如果我理解你的要求,这应该有效:

L1.AddRange(L2.Except(L1));
L1.RemoveAll(item => !L2.Contains(item));

不是单行,但足够接近......

答案 1 :(得分:1)

尝试这样的事情

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 };

答案 2 :(得分:1)

也许Linq的布尔运算符如Intersect()对你有帮助吗?