Compare nullable types in Linq to Sql

Ali Ersöz picture Ali Ersöz · Feb 25, 2009 · Viewed 49.3k times · Source

I have a Category entity which has a Nullable ParentId field. When the method below is executing and the categoryId is null, the result seems null however there are categories which has null ParentId value.

What is the problem in here, what am I missing?

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

    return subCategories;
}

By the way, when I change the condition to (c.ParentId == null), result seems normal.

Answer

ariel picture ariel · Oct 23, 2010

Other way:

Where object.Equals(c.ParentId, categoryId)

or

Where (categoryId == null ? c.ParentId == null : c.ParentId == categoryId)