Как использовать LINQ Distinct () с несколькими полями

У меня есть следующееEF class выведено из базы данных (упрощенно)

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

ProductId этоPrimary Key стола.

За плохое дизайнерское решение, принятое дизайнером БД (я не могу его изменить), у меня естьCategoryId а такжеCategoryName в этой таблице.

мне нужноDropDownList с (отличным)CategoryId какValue а такжеCategoryName какText, Поэтому я применил следующий код:

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

который логически должен создать анонимный объект сCategoryId а такжеCategoryName как свойства.Distinct() гарантирует, что нет дубликатов пары (CategoryId, CategoryName).

Но на самом деле это не работает. Насколько я понялDistinct() работает только тогда, когда в коллекции есть только одно поле, иначе оно просто игнорирует их ... это правильно? Есть ли обходной путь? Спасибо!

UPDATE

сожалеюproduct является:

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

Я нашел альтернативный способ получить тот же результат, что иDistinct():

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

Ответы на вопрос(8)

Ваш ответ на вопрос