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