我有一个 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
那么我该如何正确地写我自己的呢?