Compare tipos anuláveis em Linq para Sql

Eu tenho uma entidade de categoria que possui um campo Nullable ParentId. Quando o método abaixo está em execução e o categoryId é nulo, o resultado parece nulo, no entanto, existem categorias com valor nulo de ParentId.

Qual é o problema aqui, o que estou perdendo?

public IEnumerable<ICategory> GetSubCategories(long? categoryId)
{
    var subCategories = this.Repository.Categories.Where(c => c.ParentId == categoryId)
        .ToList().Cast<ICategory>();

    return subCategories;
}

A propósito, quando altero a condição para (c.ParentId == null), o resultado parece norma

questionAnswers(7)

yourAnswerToTheQuestion