重複したオブジェクトを含むデータを返す L2E クエリがあります。これらの重複オブジェクトを削除する必要があります。基本的に、それらの ID が同じである場合、オブジェクトは重複していると想定する必要があります。を試しましq.Distinct()
たが、それでも重複したオブジェクトが返されました。次に、独自の IEqualityComparer を実装してDistinct()
メソッドに渡してみました。メソッドは次のテキストで失敗しました:
LINQ to Entities はメソッド 'System.Linq.IQueryable
1[DAL.MyDOClass] Distinct[MyDOClass](System.Linq.IQueryable
1[DAL.MyDOClass], System.Collections.Generic.IEqualityComparer`1[DAL.MyDOClass])' メソッドを認識せず、このメソッドはストア式に変換できません。
EqualityComparer の実装は次のとおりです。
internal class MyDOClassComparer: EqualityComparer<MyDOClass>
{
public override bool Equals(MyDOClass x, MyDOClass y)
{
return x.Id == y.Id;
}
public override int GetHashCode(MyDOClass obj)
{
return obj == null ? 0 : obj.Id;
}
}
IEqualityComparer
では、自分自身を適切に書くにはどうすればよいでしょうか。