我有一個類與字段ColDescriptionOne(字符串),ColDescriptionTwo(字符串)和ColCodelist(int)。我想獲得這個類的兩個列表的相交,其中desc相等但代碼列表不同。問題與自定義EqualityComparer
我可以使用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,新CodeListComparer ());
任何想法我在做什麼錯在這裏?
感謝 蘇尼特
對不起......但那是愚蠢的我!我確實改變了,但仍然無法得到它。也許我錯過了其他的東西... – Sunit 2009-12-02 17:24:54
謝謝...你是對的。我完全錯過了。 – Sunit 2009-12-02 18:36:17
快速的問題,如果我需要從通過上述比較器的兩個對象報告值,我想我需要一個自定義擴展與GetEnumerators()...正確嗎? – Sunit 2009-12-02 19:45:22