2013-10-19 87 views
1

我有兩個名爲List1的列表& List2。比較兩個列表以使它們在元素中相等

現在說List1 & List2有5個元素{a,b,c,d,e}。現在,如果我從List1中刪除{b,c}並將{f,g,h}添加到List1,我如何讓List2 Equal(通過添加&刪除操作)。

+0

爲什麼不是'List2 = List1'? –

回答

2

「(做就加&刪除操作。 )「

爲什麼這個約束?
最簡單,最可靠,最可能的最快方法:

List2 = List1.ToList(); 

但是,如果你真的想:

List2.RemoveRange(List2.Except(List1)); // You may have to write RemoveRange() 
List2.AddRange(List1.Except(List2)); 
+0

後你需要一個循環來刪除:) –

+0

@SriramSakthivel - 爲什麼?我沒有看到。但我修復了添加/刪除部分,最初我錯了。 –

+0

@亨克 - 由於引用對「List1」和「List2」不同。所以進一步更新'List1'將不會反映到'List2'。 –

1

讓列表2只是一個列表1的參考,例如:

List<string> list1 = new List<string>(); 
List<string> list2 = list1; 

修改列表1,會影響列表2以及

0

的@Henk Holterman建議以正確的方式(對答案的第一部分),但是如果你想要的只是你在OP中提到的那麼你可以用這個

list2.RemoveAll(l => !list1.Contains(l)); 
list2.AddRange(list1.Except(list2)); 
相關問題