我有两个名为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;
修改列表 1 也会影响列表 2
霍尔特曼@Henk提出了正确的方法(在答案的第一部分),但如果你想要你在 OP 中提到的内容,那么你可以使用它
list2.RemoveAll(l => !list1.Contains(l));
list2.AddRange(list1.Except(list2));