我有两个名为List1的列表& List2。比较两个列表以使它们在元素中相等
现在说List1 & List2有5个元素{a,b,c,d,e}。现在,如果我从List1中删除{b,c}并将{f,g,h}添加到List1,我如何让List2 Equal(通过添加&删除操作)。
我有两个名为List1的列表& List2。比较两个列表以使它们在元素中相等
现在说List1 & List2有5个元素{a,b,c,d,e}。现在,如果我从List1中删除{b,c}并将{f,g,h}添加到List1,我如何让List2 Equal(通过添加&删除操作)。
“(做就加&删除操作。 )“
为什么这个约束?
最简单,最可靠,最可能的最快方法:
List2 = List1.ToList();
但是,如果你真的想:
List2.RemoveRange(List2.Except(List1)); // You may have to write RemoveRange()
List2.AddRange(List1.Except(List2));
后你需要一个循环来删除:) –
@SriramSakthivel - 为什么?我没有看到。但我修复了添加/删除部分,最初我错了。 –
@亨克 - 由于引用对“List1”和“List2”不同。所以进一步更新'List1'将不会反映到'List2'。 –
让列表2只是一个列表1的参考,例如:
List<string> list1 = new List<string>();
List<string> list2 = list1;
修改列表1,会影响列表2以及
的@Henk Holterman建议以正确的方式(对答案的第一部分),但是如果你想要的只是你在OP中提到的那么你可以用这个
list2.RemoveAll(l => !list1.Contains(l));
list2.AddRange(list1.Except(list2));
为什么不是'List2 = List1'? –