我有下面的 EF 级派生自一个数据库(简化)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
ProductId
是表的 主键。
对于数据库设计器做出的糟糕的设计决策(我不能修改它) ,我在这个表中有 CategoryId
和 CategoryName
。
我需要一个 下拉列表与(不同) CategoryId
作为 价值和 CategoryName
作为 短信。因此,我应用以下代码:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
它在逻辑上应该创建一个匿名对象,其属性为 CategoryId
和 CategoryName
。Distinct()
保证不存在重复对(CategoryId
,CategoryName
)。
但实际上它并不起作用。据我所知,Distinct()
只在集合中只有一个字段的情况下工作,否则它就会忽略它们... ... 对吗?有什么解决办法吗?谢谢!
更新
对不起,product
是:
List<Product> product = new List<Product>();
我找到了另一种方法来获得与 Distinct()
相同的结果:
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})