我有以下从数据库派生出来的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})