【发布时间】:2014-04-24 23:26:34
【问题描述】:
我有两个列表,StockOld 和 StockNew。它们是一种称为“库存”的自定义类型。 Stock 有 5 个属性,但出于我的目的,如果两个列表中的两个属性 isin 和 region 相同,则应将对象视为相等。如果创建一个新列表来选择 StockOld 和 StockNew 中相等的所有对象,我想要什么。希望下面的示例将有助于说明我的意思。
StockOld StockNew Result I would like
ISIN Region ISIN Region ISIN Region
ABC1 UK DFG3 EU ABC1 UK
ERT4 US ABC1 UK LMN8 EU
LMN8 EU PLK2 EU
LMN8 EU
我创建了一个实现 IEqualityComparer 的比较器类,请参见下文。
public class ComparerISINRegion : IEqualityComparer<Stock>
{
public bool Equals(Stock x, Stock y)
{
return x.ISIN == y.ISIN && x.Region == y.Region;
}
public int GetHashCode(Stock obj)
{
int hash = 17;
hash = hash * 23 + (obj.ISIN ?? "").GetHashCode();
hash = hash * 23 + (obj.Region ?? "").GetHashCode();
return hash;
}
}
【问题讨论】:
标签: c#