我有两个名为 List1 和 List2 的列表。
现在说 List1 & List2 有 5 个元素 {a,b,c,d,e}。现在,如果我从 List1 中删除 {b,c} 并将 {f,g,h} 添加到 List1,我怎样才能使 List2 相等(通过对其执行添加和删除操作。)。
“(通过对其进行添加和删除操作。)”
为什么会有这个约束?
最简单、最可靠且可能最快的方法:
List2 = List1.ToList();
但如果你真的想要它:
List2.RemoveRange(List2.Except(List1)); // You may have to write RemoveRange()
List2.AddRange(List1.Except(List2));
让 List2 只是 List1 的一个引用,例如:
List<string> list1 = new List<string>();
List<string> list2 = list1;
修改 list1 也会影响 list2
@Henk Holterman 提出了正确的方法(在答案的第一部分),但如果你想要你在 OP 中提到的内容,那么你可以使用它
list2.RemoveAll(l => !list1.Contains(l));
list2.AddRange(list1.Except(list2));