从一个列表中删除另一个列表中的值但保留重复项?

时间:2017-09-20 16:27:10

标签: c# list linq

我在C#中有两个对象列表。一个大,一个小。为了便于说明,我们说它们看起来有点像......

List A                List B

Cat                   Mouse
Dog                   Cat
Mouse                 Dog
Cow
Dog
Cat
Dog

我想从列表A中删除列表B中的值,但每次出现只删除一次。

因此,由于'Cat'和'Dog'不止一次出现在List A中,删除后,仍有一个'Cat'条目和两个'Dog'条目仍然在List A中。

这有意义吗?有没有一种简单的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

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

或更短的

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

答案 1 :(得分:1)

foreach(var item in ListB)
{
    ListA.Remove(item);
}