Jak używać LINQ Distinct () z wieloma polami

Mam następująceKlasa EF pochodzące z bazy danych (uproszczone)

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

ProductId jestGłówny klucz stołu.

Dla złej decyzji projektowej podjętej przez projektanta DB (nie mogę go zmodyfikować), mamCategoryId iCategoryName w tej tabeli.

PotrzebujęLista rozwijana z (wyraźny)CategoryId tak jakWartość iCategoryName tak jakTekst. Dlatego zastosowałem następujący kod:

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

co logicznie powinno stworzyć anonimowy obiekt za pomocąCategoryId iCategoryName jako właściwości. TheDistinct() gwarantuje, że nie ma pary duplikatów (CategoryId, CategoryName).

Ale tak naprawdę to nie działa. O ile zrozumiałemDistinct() działa tylko wtedy, gdy w kolekcji jest tylko jedno pole, inaczej po prostu je ignoruje ... czy jest poprawne? Czy jest jakieś obejście? Dzięki!

AKTUALIZACJA

Przepraszamproduct jest:

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

Znalazłem alternatywny sposób uzyskania tego samego wynikuDistinct():

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

questionAnswers(8)

yourAnswerToTheQuestion