我有兩個名爲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'? –