比较两个列表,使它们在元素中相等

时间:2013-10-19 08:14:05

标签: c# list compare

我有两个名为List1&的列表列表2。

现在说List1& List2有5个元素{a,b,c,d,e}。现在,如果我从List1中删除{b,c}并将{f,g,h}添加到List1,我如何使List2相等(通过对其执行添加和删除操作。)。

3 个答案:

答案 0 :(得分:2)

  

“(通过对其进行添加和删除操作。)”

为什么会出现这种限制? 最简单,最可靠,也可能是最快的方式:

List2 = List1.ToList();

但如果你真的想要它:

List2.RemoveRange(List2.Except(List1));  // You may have to write RemoveRange()
List2.AddRange(List1.Except(List2));

答案 1 :(得分:1)

让List2只是List1的引用,例如:

List<string> list1 = new List<string>();
List<string> list2 = list1;

修改list1也会影响list2

答案 2 :(得分:0)

@Henk Holterman建议正确的方法(在答案的第一部分),但如果你想要你在OP中提到的那么你可以使用这个

list2.RemoveAll(l => !list1.Contains(l));
list2.AddRange(list1.Except(list2));