Como usar o LINQ Distinct () com vários campos

Eu tenho o seguinteClasse EF derivado de um banco de dados (simplificado)

class Product
{ 
     public string ProductId;
     public string ProductName;
     public string CategoryId;
     public string CategoryName;
}

ProductId é oChave primária da mesa.

Para uma má decisão de design feita pelo designer DB (não posso modificá-lo), tenhoCategoryId eCategoryName nesta tabela.

eu preciso deDropDownList com (distinto)CategoryId ComoValor eCategoryName ComoTexto. Por isso, apliquei o seguinte código:

product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();

que logicamente deve criar um objeto anônimo comCategoryId eCategoryName como propriedades. oDistinct() garante que não há pares de duplicados (CategoryId, CategoryName).

Mas na verdade não funciona. Tanto quanto eu entendi oDistinct() funciona apenas quando há apenas um campo na coleção, caso contrário, apenas os ignora ... está correto? Existe alguma solução? Obrigado!

ATUALIZAR

Desculpaproduct é:

List<Product> product = new List<Product>();

Eu encontrei uma maneira alternativa de obter o mesmo resultado queDistinct():

product.GroupBy(d => new {d.CategoryId, d.CategoryName}) 
       .Select(m => new {m.Key.CategoryId, m.Key.CategoryName})

questionAnswers(8)

yourAnswerToTheQuestion