【发布时间】:2011-03-20 12:35:45
【问题描述】:
我有 2 个 class A 列表,A 已实现 Equals(object obj) 和 GetHashCode() 这两种方法正常工作,代码如下。
class A
{
public string TEST
{
get;
set;
}
public override bool Equals(object obj)
{
return ((A)obj).TEST == this.TEST;
}
public override int GetHashCode()
{
return this.TEST.GetHashCode();
}
}
我有 2 个此类列表,firstList = { X1, X2, X3 } 和 secondList = { X1, X2, Y1 }。当我使用firstList.Except(secondList) 时,它总是返回 firstList 中的所有元素,secondList.Except(firstList) 也返回 secondList 中的所有元素,如下所示。
var test1 = firstList.Except(secondList).ToList(); // test1 = all elements of firstList
var test2 = secondList.Except(firstList).ToList(); // test2 = all elements of secondList
我想知道如何解决这个问题?
【问题讨论】:
-
TEST 属性有什么用?
-
此代码无法编译。测试没有类型。
-
TEST 是字符串,我已经修好了 =)
-
Except根据您的示例类结构对我来说表现正确。请发布无法正常工作的完整代码示例。
标签: c# list ienumerable