我已经尝试了几个小时来让 Distinct 为我的代码工作。
我正在使用 EF 4.3、MVC3、Razor 并尝试获取产品 ID 和名称的列表。当我对数据库运行 Sql 查询时,它很好。
Sql 查询是
SELECT DISTINCT [ProductId]
,[Product_Name]
FROM [dbo].[PRODUCT]
该表中唯一的另一列是国家代码,这就是标准 distinct() 不起作用的原因。
我已经创建了一个 IEqualityComparer
这是代码:
public class DistinctProduct : IEqualityComparer<PRODUCT>
{
public bool Equals(PRODUCT x, PRODUCT y)
{
return x.ProductId.Equals(y.ProductId);
}
public int GetHashCode(PRODUCT obj)
{
return obj.ProductId.GetHashCode();
}
}
这是我叫它的地方。
IEqualityComparer<PRODUCT> customComparer = new DistinctProduct();
IEnumerable<PRODUCT> y = db.PRODUCTs.Distinct(customComparer);
但是当它到达最后一行时,我得到一个错误说明......
LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[MyService.Models.PRODUCT] Distinct[PRODUCT](System.Linq.IQueryable`1[MyService.Models.PRODUCT], System.Collections.Generic.IEqualityComparer`1[MyService.Models.PRODUCT])' method, and this method cannot be translated into a store expression.
谁能告诉我我做错了什么?
谢谢,
大卫