我有两个同一复杂类型的列表,即类。
var list1 = new List<Info>();
list1.Add(new Info(){ A = 100, B = 100 });
list1.Add(new Info(){ A = 200, B = 200 });
var list2 = new List<Info>();
list2.Add(new Info(){ A = 20, B = 20 });
list2.Add(new Info(){ A = 200, B = 200 });
public class Info
{
public int A {get;set;}
public int B {get;set; }
}
当我这样做的时候
list1.Except(list2);
我得到了一个不正确的结果。显然,结果显示了列表1的所有项。
{ A = 100, B = 100 }
{ A = 200, B = 200 }
当我对相同的操作使用匿名类时,得到了正确的结果
list1.Select(a=> new { A = a.A, B = a.B}).Except(list2.Select(b=> new {A = b.A, B = b.B})).ToList();
我做错什么了?
这不是重复的问题,因为“原始”问题在未回答和含糊不清的解释。此外,这个问题还引入了比较匿名对象的可能性。