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})