2017-09-20 50 views
-2

我有兩個C#中的對象列表。一大一小。爲了說明起見,讓我們說,他們看起來有點像這樣...從另一個列表中刪除一個列表中的值,但保留重複項?

List A    List B 

Cat     Mouse 
Dog     Cat 
Mouse     Dog 
Cow 
Dog 
Cat 
Dog 

我想刪除名單A名單B的值,但只有一次,每次出現。

如此以來,「貓」和「狗」都在名單A不止一次,去除後,仍然會是「貓」的一個條目,並且仍然在名單A.兩個條目爲「狗」

這有道理嗎?有沒有簡單的方法來實現這一點?

+0

什麼動物,弦?類? – Equalsk

+0

'foreach(listB中的var elem)listA.Remove(elem);'?你列表中的東西是否實現了像'IEquatable '等東西? –

+0

他們是列表但列表總是會被填滿。有一個理由,它必須是列表而不是列表雖然。 – AzzyDude

回答

1
foreach(var listBItem in listB) 
{ 
    var index = listA.IndexOf(listBItem); 
    if (index > -1) listA.RemoveAt(index); 
} 

或短

listB.ForEach(i => listA.Remove(i)); 
+0

是的,我很笨。不知道爲什麼我沒有想到簡單明瞭的事情。 – AzzyDude

1
foreach(var item in ListB) 
{ 
    ListA.Remove(item); 
} 
相關問題