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

本文关键字:元素 列表 两个 比较 | 更新日期: 2023-09-27 18:35:59

我有两个名为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));