我有以下内容EF class从数据库导出(简化)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
is the 首要的关键表的。
对于数据库设计者做出的错误设计决策(我无法修改它),我有CategoryId
and CategoryName
在此表中。
我需要一个下拉列表与(不同)CategoryId
as Value and CategoryName
as Text。因此我应用了以下代码:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
从逻辑上讲,它应该创建一个匿名对象CategoryId
and CategoryName
作为属性。这Distinct()
保证没有重复对(CategoryId
, CategoryName
).
但实际上是行不通的。据我了解Distinct()
仅当集合中只有一个字段时才起作用,否则它只会忽略它们......这是正确的吗?有什么解决方法吗?谢谢!
UPDATE
Sorry product
is:
List<Product> product = new List<Product>();
我找到了另一种方法来获得相同的结果Distinct()
:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})