Como obtenho a diferença em duas listas em c #?

Ok, então eu tenho duas listas em c #

List<Attribute> attributes = new List<Attribute>();
List<string> songs = new List<string>();

one é de strings ee one é de um objeto de atributo que eu criei .. muito simples

class Attribute
{
    public string size { get; set; }
    public string link { get; set; }
    public string name { get; set; }
    public Attribute(){}
    public Attribute(string s, string l, string n) 
    {
        size = s;
        link = l;
        name = n;
    }
}

Agora tenho que comparar para ver quais músicas não estão no nome dos atributos, por exemplo,

songs.Add("something"); 
songs.Add("another"); 
songs.Add("yet another");

Attribute a = new Attribute("500", "http://google.com", "something" ); 
attributes.Add(a);

Eu quero uma maneira de retornar "outro" e "ainda outro" porque eles não estão no nome da lista de atributos

so for pseudocode

difference = songs - attributes.names

questionAnswers(8)

yourAnswerToTheQuestion