私は、Distinctを自分のコードで機能させるために何時間も努力してきました。
私はEF4.3、MVC3、Razorを使用しており、製品IDと名前までのリストを取得しようとしています。DBに対して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.
誰かが私が間違っていることを教えてもらえますか?
ありがとう、
デビッド