如何在EntityObject列表上执行Distinct

时间:2013-04-11 15:01:40

标签: c# .net linq entity-framework

Distinct()不能应用于某些实体,导致某些字段无法进行哈希处理(如文本字段)。

1 个答案:

答案 0 :(得分:1)

毕竟当EntityObject需要Distinct时,我们只需要对实体键进行比较。 IEqualityComparer可以这样实现:

public class EntityObComparer : IEqualityComparer<EntityObject>
{
    public bool Equals(EntityObject x, EntityObject y)
    {
        return x.EntityKey.Equals(y.EntityKey);
    }

    public int GetHashCode(EntityObject obj)
    {
        return obj.GetHashCode();
    }
}

然后,distinct可以这样执行:

var foo = MyListOfEntityObjects.Distinct(new EntityObComparer());