Cómo usar LINQ Distinct () con múltiples campos

Tengo los siguientesClase EF derivado de una base de datos (simplificado)

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

ProductId es elClave primaria de la mesa.

Para una mala decisión de diseño tomada por el diseñador de DB (no puedo modificarlo), tengoCategoryId yCategoryName en esta tabla

necesito unLa lista desplegable con (distinto)CategoryId comoValor yCategoryName comoTexto. Por eso apliqué el siguiente código:

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

el cual lógicamente debe crear un objeto anónimo conCategoryId yCategoryName como propiedades. losDistinct() garantiza que no haya pares duplicados (CategoryId, CategoryName).

Pero en realidad no funciona. Por lo que entendíDistinct() funciona solo cuando hay un solo campo en la colección; de lo contrario, simplemente los ignora ... ¿es correcto? ¿Hay algún trabajo alrededor? ¡Gracias!

ACTUALIZAR

Lo sientoproduct es:

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

Encontré una forma alternativa de obtener el mismo resultado queDistinct():

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

Respuestas a la pregunta(8)

Su respuesta a la pregunta