2013-10-19 88 views
1

我有两个名为List1的列表& List2。比较两个列表以使它们在元素中相等

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

+0

为什么不是'List2 = List1'? –

回答

2

“(做就加&删除操作。 )“

为什么这个约束?
最简单,最可靠,最可能的最快方法:

List2 = List1.ToList(); 

但是,如果你真的想:

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

后你需要一个循环来删除:) –

+0

@SriramSakthivel - 为什么?我没有看到。但我修复了添加/删除部分,最初我错了。 –

+0

@亨克 - 由于引用对“List1”和“List2”不同。所以进一步更新'List1'将不会反映到'List2'。 –

1

让列表2只是一个列表1的参考,例如:

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

修改列表1,会影响列表2以及

0

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

list2.RemoveAll(l => !list1.Contains(l)); 
list2.AddRange(list1.Except(list2)); 
相关问题