0

我需要编写一个可以比较两个列表的方法,以查看两者之间是否存在任何差异,而无需具体指定要比较的两个列表中的哪些属性。例如,我不能说:

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))));
4

1 回答 1

0

您可以使用Except扩展方法。

msdn

意识到这一点:

如果你想比较一些自定义数据类型的对象序列,你必须在你的类中实现 IEqualityComparer 通用接口。

于 2013-05-13T07:09:25.877 回答