0
我有一個對象的集合,我想根據幾個屬性找到不同的值。與封裝的相等不同
我可以這樣做:
var distinct = myValues.GroupBy(p => new { A = p.P1, B = p.P2 });
但我想封裝平等sementics。這樣的事情:
public interface IKey<T>
{
bool KeyEquals(T other);
}
public class MyClass : IKey<MyClass>
{
public string P1 { get; set; }
public string P2 { get; set; }
public bool KeyEquals(MyClass other)
{
if(object.ReferenceEquals(this, other)
return true;
if(other == null)
return false;
return this.P1 == other.P1 && this.P2 == other.P2;
}
}
是否有O(N)的方式來獲取不同的值使用我的KeyEquals函數?
你爲什麼不只是重載Equals和GetHashCode方法呢? –
MyClass是可變的,我打算在哈希集合中使用它 – ConditionRacer
您仍然可以實現IEqualityComparer並將它傳遞給GroupBY –