【发布时间】:2009-12-02 17:17:55
【问题描述】:
我有一个包含字段 ColDescriptionOne(string)、ColDescriptionTwo(string) 和 ColCodelist(int) 的类。我想得到这个类的两个列表的交集,其中 desc 相等但 codelist 不同。
我可以使用 Where 子句并得到我需要的东西。但是,我似乎无法使用这样的自定义比较器使其工作:
internal class CodeListComparer: EqualityComparer<SheetRow>
{
public override bool Equals(SheetRow x, SheetRow y)
{
return Equals(x.ColDescriptionOne, y.ColDescriptionOne) &&
Equals(x.ColDescriptionSecond, y.ColDescriptionOne)
&& !Equals(x.ColCodelist, y.ColCodelist);
}
public override int GetHashCode(SheetRow obj)
{
return ((obj.ColDescriptionOne.GetHashCode()*397) + (obj.ColDescriptionSecond.GetHashCode()*397)
+ obj.ColCodelist.GetHashCode());
}
}
然后像这样使用它:
var onylByCodeList = firstSheet.Entries.Intersect(otherSheet.Entries, new CodeListComparer());
有什么想法我在这里做错了吗?
谢谢 苏尼特
【问题讨论】: