Eu sempre tento extrair o máximo dos métodos de extensão do IEnumerable. Aqui está uma joia que encontrei no Stack Overflow:
bool bIsSubset = !IEnumerable2.Except(IEnumerable1).Any();
Em vez de dois forloops rastreando se todos os membros em IEnumerable2 existirem em IEnumerable1, o comando acima pode fazer tudo em uma linha.