在下面的代码中,如果我迭代 L3,我希望有 2 个结果可用。但是它只有一个结果,该结果是 objTest 的 Id = 9。我认为它应该是一个具有两个 objtest 的 Id = 9 和 Id = 10 的结果集。
class Program
{
public class objTest
{
public int Value { get; set; }
public bool On { get; set; }
public int Id { get; set; }
}
class PramComp : EqualityComparer<objTest>
{
public override bool Equals(objTest x, objTest y)
{
return x.Value == y.Value;
}
public override int GetHashCode(objTest obj)
{
return obj.Value.GetHashCode();
}
}
static void Main(string[] args)
{
List<objTest> L1 = new List<objTest>();
L1.Add(new objTest { Value = 1, On = true ,Id =1});
L1.Add(new objTest { Value = 2, On = false ,Id =2});
L1.Add(new objTest { Value = 3, On = false, Id = 3 });
L1.Add(new objTest { Value = 4, On = false ,Id =4});
L1.Add(new objTest { Value = 5, On = false ,Id =5});
List<objTest> L2 = new List<objTest>();
L2.Add(new objTest { Value = 6, On = false ,Id =6});
L2.Add(new objTest { Value = 7, On = false ,Id=7});
L2.Add(new objTest { Value = 8, On = false,Id =8 });
L2.Add(new objTest { Value = 1, On = true,Id =9 });
L2.Add(new objTest { Value = 1, On = true, Id =10 });
var L3 = L2.Intersect(L1, new PramComp());
}
}
所以如果我想返回Id=9和Id=10这两个结果,我的代码就出错了。有人能告诉我我的错误在哪里吗?