使用自定义方法的副本验证列表中所有属性的值

时间:2013-05-13 07:03:07

标签: c# linq

我需要编写一个方法,可以比较两个列表,看看两者之间是否存在任何差异,而没有明确指出要比较的两个列表中的哪个属性。例如,我不能说:

var exceptList = list1.Where (r => r.Name !list2.Any( r2.Name == r.Name ))

粗体部分需要是动态的,因此我可以将该方法重用于不同类型的列表。我知道以下示例不起作用,但我需要类似的东西:

var r = myLeftList.Where(p => !myRighttList.Any(p2 =>
      p2.GetType().GetProperties().GetValue(myLeftList.IndexOf(p2)) ==
      p.GetType().GetProperties().GetValue(myRighttList.IndexOf(p))));

1 个答案:

答案 0 :(得分:0)

您可以使用Except扩展方法。

请参阅msdn

意识到这一点:

  

如果要比较某些自定义数据类型的对象序列,   你必须在中实现IEqualityComparer泛型接口   你的班级。