I have the following EF class derived from a database (simplified)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
is the Primary Key of the table.
For a bad design decision made by the DB designer (I cannot modify it), I have CategoryId
and CategoryName
in this table.
I need a DropDownList with (distinct) CategoryId
as Value and CategoryName
as Text. Therefore I applied the following code:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
which logically it should create an anonymous object with CategoryId
and CategoryName
as properties. The Distinct()
guarantees that there are no duplicates pair (CategoryId
, CategoryName
).
But actually it does not work. As far as I understood the Distinct()
works just when there is just one field in the collection otherwise it just ignores them...is it correct? Is there any workaround? Thanks!
UPDATE
Sorry product
is:
List<Product> product = new List<Product>();
I found an alternative way to get the same result as Distinct()
:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…