using System.Collections.Generic;
public static void Main()
var sequenceA = new[] { "a", "a", "b", "b", "c" };
var sequenceB = new[] { "a", "a", "a", "b", "c", "c", "c", "d" };
var expectedC = new[] { "a", "c", "c", "d" };
.ToDictionary(keySelector => keySelector.Key, valueSelector => new Stack<string>(valueSelector.ToList()));
var itensToRemove = new List<string>();
foreach (string b in sequenceB)
if (groupA.TryGetValue(b, out itemsA))
var sequenceC = sequenceB.ToList();
foreach (var toRemove in itensToRemove)
sequenceC.Remove(toRemove);
Console.WriteLine(string.Concat("Esperado: ", JsonConvert.SerializeObject(expectedC)));
Console.WriteLine(string.Concat("Realizado: ", JsonConvert.SerializeObject(sequenceC)));